python day34 数据库一 创建表增加表create table 表名(
字段名 列表型[可选的参数], #必须加逗号
字段名 列表型[可选的参数] #最后一行不加逗号
)charset = utf8 #后面
增加数据#语法
insert into 表名(列1,列2) values (值1,值2);
#例子
insert into t1 (id,name) values (1,'momo');
查询数据#语法
select 列1,列2 from 表名; (*表示查询所有的列)
show tables;
#列子
select id,name from t1;
修改数据#1.修改表名 语法
alter table 旧表名 rename 新表名;
alter table t1 rename t11;
#2.增加字段 语法
#添加的列永远是添加在最后一列之后
alter table 表名
add 字段名 列表型[可选的参数];
alter table t11 add name varchar(32) not null defaut '';
#添加的列永远是添加在第一列
alter table 表名
add 字段名 列表型[可选的参数] first;
alter table t11 add name varchar(32) not null defaut '' first;
#添加的列永远是添加在....列之后
alter table 表名 add 字段名 列表型[可选的参数] after 字段名;
alter table t11 add name varchar(32) not null defaut '' after age;
#3.删除字段 语法
alter table 表名 drop 字段名 ;
alter table t11 drop name;
#4.修改字段 语法
#修改字段数据类型
alter table 表名 modify 字段名 数据类型[可选的参数];
alter table t11 modify name char(30);
#修改字段名和数据类型
alter table 表名 change 字段名 字段名 数据类型[可选的参数];
alter table t11 change name name2 char(30) not null default '';
删除数据#删除数据 语法
drop table 表名;
drop table t1;
复制表结构create table t11 like t111;
二 查看表结构#方法一
describe 表名;
#方法二
desc 表名;
#方法三 查看创建表的SQL语句
show create table 表名
三 MySQL支持的数据类型整型tinyint | 1字节 | (-128,127) | (0,255) | 小整数值 | smallint | 2字节 | (-32 768,32 767) | (0,65 535) | 大整数值 | mediumint | 3 字节 | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 | int或integer | 4 字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 | bigint | 4 字节 | (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 大整数值 | float | 4 字节float(255,30) | (-3.402 823 466 E 38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E 38) | 0,(1.175 494 351 E-38,3.402 823 466 E 38) | 单精度 浮点数值 | float | 8 字节double(255,30) | (-1.797 693 134 862 315 7 E 308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E 308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E 308) | 双精度 浮点数值 | decimal | 对DECIMAL(M,D) ,如果M>D,为M 2否则为D 2 double(65,30) | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
#浮点型
create table t1(
id int auto_increment primary key,
salary decimal(16,10),
num float
)charset=utf8;
#float : 精确到小数点两位
#decimal : 可以控制精确的小数点位 decimal(m,n) m是数字的总个数(负号不算),n是小数点后个数
字符串CHAR | 0-255字节 | 定长字符串 | VARCHAR | 0-65535 字节 | 变长字符串 | TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 | TINYTEXT | 0-255字节 | 短文本字符串 | BLOB | 0-65 535字节 | 二进制形式的长文本数据 | TEXT | 0-65 535字节 | 长文本数据 | MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 | MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 | LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
#char(长度): 定长
create table t1(
id int unsigned auto_increment primary key,
name char(10) not null default 'momo'
)charset=utf8;
#varchar(长度): 变长
create table t2(
id int auto_increment primary key,
name varchar(10) not null default 'momo'
)charset=utf8;
'''区别:
char: 定长, 无论插入的字符是多少个,永远固定占规定的长度
场景:
1. 身份证
2. 手机号 char(11)
3. md5加密之后的值,比如密码 等 char(32)
varchar: 变长, 根据插入的字符串的长度来计算所占的字节数,但是有一个字节是用来保存字符串的大小的
注意:如果,不能确定插入的数据的大小,一般建议使用 varchar(255)
'''
日期时间类型DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 年月日 | TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时分秒 | YEAR | 1 | 1901/2155 | YYYY | 年份值 | DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD\HH:MM:SS | 年月日时分秒 | TIMESTAMP | 4 | 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD\HHMMSS | 混合日期和时间值,时间戳 |
create table t1(
d date,
t time,
dt datetime
);
四 表的完整型约束auto_increment : 自增 primary key : 主键索引,可以加快查询速度,列的值不能重复 not null : 标识该字段不能为空 default : 为该字段设置默认值 #列子1
create table t1(
id int,
name char(5)
)charset = utf8;
#例子2
create tabel t2(
id int auto_increment primary key,
name char(10)
)charset = utf8
#例子3
create table t3(
id int unsigned auto_increment primary key,
name char(10) not null defualt 'hello',
age int not null default 0
)charset = utf8
五 枚举ENUM 中文名称叫枚举类型,它的值范围需要在创建表时通过枚举方式显示。ENUM只允许从值集合中选取单个值,而不能一次取多个值。 create table t1 (
id int auto_increment primary key,
gender enum('male','female')
)charset utf8;
mysql> insert into t9 (gender) values ('male');#不是male或者female就会报错
六 操作表数据行增#语法
insert into 表名 (列1, 列2) values (值1,'值2');
#例子
insert into t1 (id, name) values (1, 'simple');
删#语法
delete from 表名 where 条件;
#例子
mysql> delete from t1 where id=1;
delete from 表名; #删除表中所有的数据
truncate 表名; #没有where条件的
区别:
1. delete之后,插入数据从上一次主键自增加1开始, truncate则是从1开始
2. delete删除, 是一行一行的删除, truncate:全选删除 truncate删除的速度是高于delete的
改#语法
update 表名 set 列名1=新值1,列名2=新值2 where 条件;
mysql> update t11 set name='momo' where id=1;
查#语法
select 列1, 列2 from 表名; (*代表查询所有的列)
select * from t66 where id=1;
#between..and...: 取值范围是闭区间
select * from t11 where id between 1 and 3;
#避免重复DISTINCT
mysql> select distinct name from t11;
#通过四则运算查询
mysql> select name, age*10 as age from t1;
# in 用法
mysql> select * from t11 where id in (1,3,5);
#like : 模糊查询
mysql> select * from t11 where name like 'm%';
mysql> select * from t11 where name like '%o';
mysql> select * from t11 where name like '%mo%'; 来源:https://www./content-2-533951.html
|