数据库-day02-20201008-数据增删改查-表的复制-数据类型

    科技2025-11-27  17

    # 数据的增删改查 # 增 insert INSERT INTO student (id,name,age) VALUES(1,'张三',18); INSERT INTO student(name,age) VALUES('jack',21); INSERT INTO student VALUES(3,'zsss',21,1,2); # 查 select SELECT * FROM student; SELECT name,age from student; SELECT name,age from student where name='zsss'; SELECT name,age from student HAVING name='zsss'; select host,user,authentication_string from user; # 改 update UPDATE student set age=23 where name='zsss'; # 删 delete 配合where 否则会删除全部 清空表 DELETE FROM student WHERE name='zsss'; DELETE FROM student; #清空表格 一行一行删除 truncate <dbtablename> #直接清空表格 # 表的复制 CREATE TABLE s select * FROM student; # 复制了数据 不建议使用 字段属性没有被复制 CREATE TABLE s1 LIKE student; INSERT INTO s1 SELECT * from student; # 只复制了原表的字段和结构属性 不复制数据 # 可以再手动复制数据 # mysql中的编码和数据类型 show VARIABLES LIKE "%character%"; # 查看默认的编码集 utf8 # 支持中文 # 要改的话 要改表的 还要改字段的编码 一般不这样 新建的时候直接指定编码集 CREATE DATABASE test; use test; create table ss1( id int PRIMARY key auto_increment, name VARCHAR(32)); mysql root@localhost:test> INSERT INTO ss1 VALUES(1,'张三'); (1366, u"Incorrect string value: '\\xE5\\xBC\\xA0\\xE4\\xB8\\x89' for column 'name' at row 1") ALTER TABLE ss1 charset=utf8; alter TABLE ss1 MODIFY name VARCHAR(32) charset utf8; INSERT INTO ss1 VALUES(1,'张三'); # 不建议修改 最好新建时直接指定 create DATABASE demo charset=utf8; # 校对集 SHOW CHARACTER SET; # 默认大小写不敏感 utf8 | UTF-8 Unicode | utf8_general_ci | 3 | # 数据类型 int 整数类型 比较常用 4个字节 ALTER TABLE ss1 add xxx int(10) zerofill; # 自动补全 INSERT INTO ss1 VALUES(2,22,2); | 2 | 22 | 0000000002 | 浮点型 小数 float(10,2) 长度10 小数点后2位 字符串类型 char(3) 3个字符 固定占3个字节 不足空格补齐 0-255 'a' 'a ' 3 数据 数据库 长度 varchar(3) 3个字符 字符占的字节 额外在用1字节记录位长 0-65535 'a' 'a' 2 'a'+1 'a ' 'a' 2 'a'+3 # 数据类型并不是越大越好 越大的数据类型会照成数据臃肿 存储空间占用过大 数据检索也会变慢 # 枚举 enum 规定了内容 别的内容无法写入 ALTER TABLE ss1 add gender enum('男','女','保密'); INSERT INTO ss1(id,name,xxx,gender) VALUES(3,'zss',22,'男'); INSERT INTO ss1(id,name,xxx,gender) VALUES(4,'zsss',22,'女'); INSERT INTO ss1(id,name,xxx,gender) VALUES(5,'zsss',22,'22'); #这个就会把报错 # 集合 set ALTER TABLE ss1 add hobby set('吃','喝','唱','跳','rap'); INSERT INTO ss1(id,name,xxx,gender,hobby) VALUES(5,'herry',22,'女','唱,rap'); # 时间类型 date 1000-01-01 9999-12-31 datetime 1000-01-01 00:00:00 9999-12-31 23:59:59 now 当前的时间 INSERT INTO ss1(id,name,xxx,gender,hobby,birthday) VALUES(7,'tom',22,'女','唱,rap','2020-10-2'); INSERT INTO ss1(id,name,xxx,gender,hobby,birthday) VALUES(8,'tom2',22,'女','唱,rap',now()); 7 | tom | 0000000022 ||,rap | 2020-10-02 00:00:00 8 | tom2 | 0000000022 ||,rap | 2020-10-08 16:56:37 # 布尔类型 True 1 Flase 0 也可以给数字 有一定的范围 # 列的属性 create TABLE t( id int PRIMARY key auto_increment, name varchar(32) not null COMMENT '姓名不能为空', age tinyint unsigned DEFAULT 18 COMMENT '默认值18'); not null 不为空 必须要给值 default 默认值 auto_increment 主键自增 PRIMARY key 主键唯一标识 不为空 不重复 一个表只有一个 PRIMARY key(id,sid) # 联合主键 使用较少 unique 唯一约束 # mysql 运算符 = > < between 40 and 50 # 在40-50之间 模糊比较 like # ` ` 反引号 避免表名和命令重复 SELECT rand(); # 生产随机数 SQL注释 -- 单行注释 /* 多行注释 */ # mysql独有的单行注释 P349
    Processed: 0.016, SQL: 9