python基础-15-mysql建库、建表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lianjiaokeji/article/details/79344908

MySQL数据库

ubuntu下su: Authentication failure的解决办法

$ sudo passwd root  
Enter new UNIX password:  
Retype new UNIX password:  
passwd: password updated successfully

安装mysql

sudo apt-get install mysql-server

查看mysql版本

mysql -V

设置mysql密码:

mysql -u用户名 -p
Enter password:123456

进入mysql



查看mysql安装情况:
mysql -uroot -p123456      

未设置密码会出现这种情况,执行设置密码流程:
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

创建用户

#创建用户
mysql> CREATE USER 'doublechina'@'%' IDENTIFIED BY '123456';
#给用户赋予权限
#  '%'表示远程连接
mysql>GRANT ALL  ON *.* TO 'doublechina'@'%';

#使更改立即生效
mysql> FLUSH PRIVILEGES;
#退出
mysql> \q

查看在哪个数据库里:
SELECT DATABASE(); 大厅 null

查看当前用户:
SELECT USER();

查看有哪些数据库:
SHOW DATABASES; # mysql 有哪些数据库

创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name

mysql> CREATE DATABASE  `mydb`;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE DATABASE `mydb`;
ERROR 1007 (HY000): Can't create database 'mydb'; database exists
mysql> CREATE DATABASE IF NOT EXISTS `mydb`;
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| mydb              |
| mysql              |
| performance_schema |
| sys                |
| test              |
+--------------------+
6 rows in set (0.00 sec)
mysql>

删除数据库

DROP DATABASE [IF EXISTS] dbname;

mysql> DROP DATABASE `mydb`;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP DATABASE `mydb`;
ERROR 1008 (HY000): Can't drop database 'mydb'; database doesn't exist
mysql> DROP DATABASE IF EXISTS `mydb`;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>
注意:
SQL语句必须以分号结尾
打开数据库

USE 数据库名称

进入mysql后,使用SELECT DATABASE(); 后会发现当前并没有进入到某个数据库中,需要使用use来进入某个数据库中。

mysql> use mydb
Database changed
查看数据库中的表

数据表(或称表)
是数据库最重要的组成部分之一,是其他对象的基础

查看数据表列表
SHOW TABLES [FROM db_name]

SHOW TABLES查看当前数据库中的数据表。

SHOW TABLES FROM 'mysql'查看mysql这个数据库中的数据表。

创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(
  column_name data_type,
)
例:
mysql>  create table tab1( id int comment '主键',  name varchar(20) comment '名字'    );
Query OK, 0 rows affected (0.01 sec)
mysql>

#comment 用来说明的,给人看的  

#查询创建的表:
mysql> show tables from mydb ;
+----------------+
| Tables_in_mydb |
+----------------+
| tab1          |
+----------------+
1 row in set (0.00 sec)

mysql> 

数据类型:
INT 整数类型
VARCHAR 变长字符串

查看创建的表:

SHOW CREATE TABLE tb_name;(\G) 表的创建详情

例:
mysql> SHOW CREATE TABLE tab1\G
*************************** 1. row ***************************
      Table: tab1
Create Table: CREATE TABLE `tab1` (
  `id` int(11) DEFAULT NULL COMMENT '主键',
  `name` varchar(20) DEFAULT NULL COMMENT '名字'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.04 sec)

mysql> 


存储引擎是innodb。nnoDB 是 MySQL 上第一个提供外键约束的数据存储引擎,除了提供事务处理外,InnoDB 还支持行锁,提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。

查看数据表结构
DESCRIBE tb_name;
SHOW COLUMNS FROM tb_name;

例:
mysql> DESCRIBE `tab1`;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)    | YES  |    | NULL    |      |
| name  | varchar(20) | YES  |    | NULL    |      |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
删除数据表
DROP TABLE `tablename`;

mysql> DROP TABLE `tab1`;

单表中数据的增、删、查、改

INSERT 插入数据

方法一:

INSERT [INTO] table_name [(column_name,...)] 
{VALUES|VALUE} ({expr|DEFAULT},...),(...),...;

方法二:

INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...;
例:
mysql> insert into tab1 values(1,"java") ,(2,"python")
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> insert into tab1 set id=3,name='kotlin'
    -> ;
Query OK, 1 row affected (0.00 sec)
SELECT 查询数据

SELECT * FROM tab_name [WHERE];

例:
mysql> select * from tab1;
+------+--------+
| id  | name  |
+------+--------+
|    1 | java  |
|    2 | python |
|    3 | kotlin |
+------+--------+
3 rows in set (0.00 sec)

UPDATE 更新数据

UPDATE  tb_name 
SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...
[WHERE where_condition];
#例:
mysql> select * from tab1;
+------+--------+
| id  | name  |
+------+--------+
|    1 | java  |
|    2 | python |
|    3 | kotlin |
+------+--------+
3 rows in set (0.00 sec)

#更新所有数据
mysql> update  tab1 set id=1 ;
Query OK, 2 rows affected (0.03 sec)
Rows matched: 3  Changed: 2  Warnings: 0



mysql> UPDATE tb1 SET id=1 WHERE name='张三';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> UPDATE tb1 SET name='佳能' WHERE id>1;
Query OK, 3 rows affected (0.10 sec)
Rows matched: 3  Changed: 3  Warnings: 0

DELETE 删除数据

DELETE FROM tbl_name [WHERE where_conditon]; 

不添加WHERE则会删除全部记录

#例:
mysql> select * from tab1 ;
+------+--------+
| id  | name  |
+------+--------+
|    1 | java  |
|    1 | python |
|    1 | kotlin |
+------+--------+
3 rows in set (0.00 sec)

#删除数据 
mysql> delete from tab1 where name='java' ;
Query OK, 1 row affected (0.00 sec)

mysql> select * from tab1;
+------+--------+
| id  | name  |
+------+--------+
|    1 | python |
|    1 | kotlin |
+------+--------+
2 rows in set (0.00 sec)
# mysql 数据类型
整型  浮点型  日期类型  字符型


mysql> create table tb2(
    -> id INT,
    -> name VARCHAR(20),    #指定长度,最多65535个字符。  ***变长
      -> sex CHAR(4),        #指定长度,最多255个字符。    ***定长
    -> price DOUBLE(4,2),    #双精度浮点型,m总个数,d小数位
      -> detail text,            #可变长度,最多65535个字符
    -> dates DATETIME,        #日期时间类型 YYYY-MM-DD HH:MM:SS
    -> ping  ENUM('好评','差评')  #枚举, 在给出的value中选择
    -> );
insert into tb2 value( 1,'iponeX','男',7999.0,'土豪手机!!!',now(),'好评');

猜你喜欢

转载自blog.csdn.net/lianjiaokeji/article/details/79344908