Python/MySQL(一、基础)
mysql:
MYSQL : 是用于管理文件的一个软件 -socket服务端 (先启动)
-本地文件操作
-解析 指令【SQL语句】 -客户端软件 (各种各样的客户端【MYSQL 自带的客户端,自己创建的客户端】)
-socket客户端
-发送指令
-解析 指令 【SQL语句】 DBMS(数据库管理系统)
语法规则(SQL语句) 其他类似软件 :
关系型数据库:(有多个约束)
非关系型数据库(约束功能偏少)
关于连接:
创建用户:
mysql> create user 'meimei'@'%' identified by '123123';
Query OK, 0 rows affected (0.00 sec)
设置用户以及密码
修改用户:
mysql> rename user 'meimei'@'%' to 'ermei'@'%';
Query OK, 0 rows affected (0.00 sec)
修改用户密码:
1 mysql> set password for 'ermei'@'%'=password('3333');
2 Query OK, 0 rows affected, 1 warning (0.00 sec)
删除用户:
1 mysql> drop user 'ermei';
2 Query OK, 0 rows affected (0.00 sec)
查看设置的权限:
1 mysql> show grants for 'meimei'@'%';
2 +------------------------------------+
3 | Grants for meimei@% |
4 +------------------------------------+
5 | GRANT USAGE ON *.* TO 'meimei'@'%' |
6 +------------------------------------+
7 1 row in set (0.00 sec)
对用户设置目录的权限;
1 mysql> grant all privileges on *.* to 'meimei'@'%';
2 Query OK, 0 rows affected (0.00 sec)
取消目录设置的权限;
1 mysql> revoke all privileges on *.* from 'meimei'@'%';
2 Query OK, 0 rows affected (0.00 sec)
数据库操作(目录)
创建数据库(文件夹)
create database 数据库名称 default charset utf8;
mysql> create database tu default charset utf8;
Query OK, 1 row affected (0.00 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| b2 |
| mysql |
| performance_schema |
| sakila |
| sys |
| tu |
| world |
+--------------------+
8 rows in set (0.00 sec)
删除数据库(文件夹)
drop database 数据库名称;
mysql> drop database tu;
Query OK, 0 rows affected (0.00 sec)
创建数据夹(文件)
mysql> create table ll(id int auto_increment primary key,naem char(10))engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.56 sec)
删除数据夹(文件)
mysql> drop table ll;
Query OK, 0 rows affected (0.23 sec)
数据表(文件内容)
增加文件内容: insert into 表名(表行名称) values(行内容)
mysql> insert into ll(id,naem) values(1,'alex');
Query OK, 1 row affected (0.06 sec)
删除文件内容
清空文件内容(继续自增)
mysql> delete from ll;
Query OK, 1 row affected (0.14 sec)
清空文件内容(重新自增)
mysql> truncate table ll;
Query OK, 0 rows affected (0.35 sec)
删除文件
mysql> drop table ll;
Query OK, 0 rows affected (0.20 sec)
mysql> show tables;
+--------------+
| Tables_in_b2 |
+--------------+
| jj |
+--------------+
1 row in set (0.00 sec)
切换目录:
sue 目录名称
mysql> use b2;
Database changed
查看数据库目录:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| b2 |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
7 rows in set (0.00 sec)
查看数据表:
show tables;
mysql> show tables;
+--------------+
| Tables_in_b2 |
+--------------+
| jj |
+--------------+
1 row in set (0.00 sec)
查看数据行;
select * from 表名;
mysql> use b2;
Database changed
mysql> select * from jj;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | xx | NULL |
| 2 | yy | NULL |
| 3 | zx | NULL |
| 4 | NULL | 11 |
+----+--------+------+
4 rows in set (0.00 sec)
设置主键(1。规范(不能重复且不能为空)2.运行速度快)
auto_increment primary key
设置是否为空:
not null (null)
mysql> create table ls(id int null) engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.44 sec)
设置引擎
engine=innodb
设置编码
default charset=utf8
设置外键
constraint fk_cc foreign key (color _id ) references color(nid)
bit【(M)】
二进制位(100010) m表示二进制位的长度(1-64),默认m=1
tinyint【(m)】【unsigned】【zerofill】
小整数,数据类型用于保存一些范围的整数数字范围;
有符号:
-128~127
无符号:
0~255
特别的;Mysql中无布尔值,使用tinyint(1)构造
int【(m)】【unsigned】【zerfodill】
整数,数据类型用于保存一些范围的整数数字范围;
有符号:
-214783648~2147483647
无符号:
0~429467295
特别的:整数类型中的m仅用于显示,对存储范围无限制。例如:int(5),当插入数据2是,select时数据显示为:00002
bigint【(m)】【unsigned】【zerfodill】
大整数,数据类型用于保存一些范围的整数数范围:
有符号: -9223372036854775808 ~ 9223372036854775807
无符号:
0 ~ 18446744073709551615
decimla[(m[,d])][unsigned][zerofill]
准确的小数值,m是数字总个数(符号不算),d是小数点后个数。m最大值为65 d最大值为30
特别的:对与精确数值计算时需要用此类型
decaimal能够存储精确值的原因在于其内部按照字符串存储
float【(M,D)】【unsigned】【zerofill】
单精度浮点数(非准确小数值),m是数字总个数,d是小数后个数
无符号: -3.402823466E+38 to -1.175494351E-38,
0
1.175494351E-38 to 3.402823466E+38
有符号:
0
1.175494351E-38 to 3.402823466E+38 **** 数值越大,越不准确 ****
double【(M,D)】【unsig】【zerofill】
双精度浮点数(非准确小数值),M是数字 总个数,d是小数点后个数 无符号:
-1.7976931348623157E+308 to -2.2250738585072014E-308
0
2.2250738585072014E-308 to 1.7976931348623157E+308
有符号:
0
2.2250738585072014E-308 to 1.7976931348623157E+308
**** 数值越大,越不准确 ****
char(m)
char 数据类型用于表示固定长度的字符串们可以包含最多达255个字符。其中m代表字符串的长度
即使数据小于m长度,也会占用m长度(会进行自动补全) varchar(10)
varchar(10)
varchar数据类型用于变长的字符串,可以包含最对达255个字符,其中m代表该数据类型所允许保存的字符串最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中
注意:虽然varchar使用起来较为灵活(节省内容),但是从整个系统的 性能角度来说,char数据类型的处理速度更快,
text
text数据类型用于保存变大字符串,可以组多到65535(2**16-1)个字符 mediumtext
A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters. longtext
A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1) characters.
enum
枚举类型:
An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)
ENUM列最多可以有65,535个不同的元素。(实际的极限小于3000。)
create table shirts(
name varchar(10)
size enum('x','x+','y','y+'))engine=innodb
insert into shirts(name,size) values('alex','y+') 在设置好的默认值范围中选择一个使用
set
集合类型: A SET column can have a maximum of 64 distinct members
一个集合列最多可以有64个不同的成员
create table myset(col set('a','b','c','d'))
insert into myset (col) values('a,d,)('a,b')('d','b') 在设置好默认的范围中选择一个内容进行组合 使用
DATE
DATE
YYYY-MM-DD(1000-01-01/9999-12-31)
TIME
TIME
HH:MM:SS('-838:59:59'/'838:59:59')
YEAR
YEAR
YYYY(1901/2155)
DATETIME
YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)
TIMESTAMP
TIMESTAMP YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)