MySQL数据库
学生学号 :char类型
身份证号码:char (18)
教师编号:char (4)
成绩 :decimal
登记时间:datatime now():表示当前时间
登录密码的长度为:41位
unsigned:只针对数值型
default:默认值,缺省约束
主键约束:primary key 字段不能为空且不能重复
唯一键:unique 字段可以为空值,但是不能重复
primary key(id,username)–组合主键(将id,name组合在一起成为表的主键)
desc A:查看指定表的结构
show create table A:查看指定表定义语句
2、自动递增
auto_increment :自动递增 是数据的一种属性,只适于数字类型
一个表只能有一个字段使用auto_increment
engine:存储引擎
将字段设置成 auto_increment 是需要将其设置成主键或者主键的一部分
3、enum,set的应用
1、enum:枚举字符串(多选一)
select left(‘abc’,2); ab
select rigth(‘abc’,2) ; bc
select substring(‘abc’,2); bc
select substring(‘abc’,2,1);
ü enum的选项对应一个数字,依次是1,2,3,4,5…,最多有65535个选项
如:enum(‘a’,’b’,’c’),如果某行的对应值为2,则选中了“b”
4、另类的insert
1、一条语句插入多条数据
语法:insert into 表名(字段列表) values (值列表1),(值列表2)
2、insert…select (须创建目标表)
语法:insert into 表名 [(字段列表)] select
字段列表 from 表名;
insert into g(username) select username from A;
注意:两处字段列表数量必须一致,且数据类型能兼容
3、create…select …(插入数据前自动根据源表所选字段构建目标表)
语法:create tabel 表名 select 字段列表 from 表名;
create table cc select username from A;
5、数据表的更改
修改数据对象:alter
对以存在的表进行结构修改
添加字段:为表A添加用户密码字段
userpassword varchar(20) not null
alter table A
add userpassword varchar(20) not null ;
更改字段属性:将密码字段长度改为30
alter table A
erpassword varchar(30) not null;
删除字段:将字段userpassword1删除
alter table A drop userpassword1;
6、约束
1、数据完整性:是指储存在数据中的数据的一致性和正确性。
2、约束是通过限制列中的数据,行中的数据和表之间数据来保证数据完整性
create table B(
id bigint unsigned auto_increment primary key,
no bigint unsigned
#构建外键字段
constraint fk_no_id foreign key(no) references A(id)
#在当前表no字段上构建引用于表A字段id的名为fk_no_id的外键
);
为表A的字段a构建主键
alter table A
add constraint pk_a primary key(a);# pk_a是主键约束名称
为表A的字段aa构建唯一键
alter table A
add constraint un_aa unique(aa);# un_aa是唯一键约束名称
为表B的字段ba构建外键(引用于表A的字段a)
alter table B
add constraint fk_ba_a foreign key(ba) references A(a);# fk_ba_a是外键名称
删除表A的主键
alter table A
drop primary key
删除表A字段aa的唯一键(un_aa)
alter table A
drop index un_aa;
删除表B字段ba的外键(fk_ba_a)
alter table B
drop foreign key fk_ba_a;
7、删除语句
drop table a,b,c,d :删除多个数据表
drop database C :删除数据库
删除数据的语法:
delete from 表名 [where 条件表达式]
在A表中id为2的数据进行删除
delete from A where id=3;
delete from B where id=3;
说明上边语句不能直接删除,原因是B表中的no字段有引用A id 为3的值
解决办法:
1、先删除从表对应数据,再删除主表数据
2、构建外键引用时,设置级联操作
3、将外键临时取消作用或删除外键引用
delete from B where id=3; 先删除从表数据
delete from A where id=3; 再删除主表数据
删除约束 (实质就是删除表结构)
删除表B的名为fk_no_id的外键
alter table B
drop foreign key fk_no_id;
删除外键约束的语法是:
尝试删表A的主键以及唯一键,并总结语法
alter table A drop primary key;
如果该主键对应的字段为自增字段,则不能删除主键约束。
alter table A drop index username;
delete删除
1、删除一个表里所有数据
delete from sinfo; 不仅删除数据,存储数据的对象都没了。
truncate table sinfo;
drop table sinfo;
----truncate属于DDL
语法:truncate table 表名;
任务:delete和truncate 的区别
1、删除教师年龄超过60岁的数据信息(DML—delete)
delete from teachers where tAge>60;
delete from teachers where tAge>=30 and tAge<=60; #包含边界值
delete from teachers where tAge not between 30 and 61;
2、删除考试分数为80或90或100的数据
delete from elogs where elScore =80 or elScore =90 or elScore=100;
delete from elogs where elScore in(80,90,100);
3、删除在2019年度登记选修的所有数据信息
delete from elogs where elDate>=‘2019-01-01 00:00:00’ and elDate<=‘2019-12-31 23:59:59’
delete from elogs where elDatebetween ‘2019-01-01 00:00:00’ and ‘2019-12-31 23:59:59’
select now(); select year(now());
select year(elDate) from elogs;
delete from student where year(passwd)=‘2019’;
4、删除姓张的老师信息
方法一:模糊查询:like字句、通配符(%:零个或多个任意字符、_😃
delete from Teachers where tName like ‘张%’;
方法二:使用截取字符的方式
delete from Teachers where left(tName,1)=‘张’
数学函数、字符串处理函数、日期和时间函数、其他函数
delete与truncate的区别
n delete会记录日志,意味着删除后的数据还可以恢复,但是效率低。
n truncate不会记录日志,删除后的数据不能恢复,但是效率高;truncate不能用于有外键约束引用的表。
truncate应用场景:如果是开发一个应用程序,开始可能使用的是测试数据,当应用开发成功后,需要将真正的数据导入到数据表中,为了使自增主键从1开始,使用truncate操作数据表比较方便。
MySQL常用函数:https://www.cnblogs.com/progor/p/8832663.html

75

被折叠的 条评论
为什么被折叠?



