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

# 数据的增删改查

# 增 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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值