使用MYSQL数据库实现编程----第二章第三章课堂知识小总结
第二章
1:创建数据库
create database myschool
2.数据类型
1.整型 int
2.小数 double
精确度要求高的 ----Decimal(18,4)
22222222211111.3334
对应的java中的类型 BigDecimal
3.字符串:nvarchar(32) varchar char
char :定长字符串(一旦设定了长度,无论真实内容有多少,都要占用指定长度的空间。)
varchar:可变字符串
nvarchar() 防止中文乱码出现 insert into grade(gradename) values(N'牛X班')
4.日期类型
DateTime yyyy-mm-dd hh:mm:ss.ms
二:.创建数据表
create table student
(
sid int primary key auto_increment not null,
sname nvarchar(32)
)
#添加记录和SQL 一样 ,表中2列,你能不能
insert into student(gradename) values('XXX班级')
1.真实的做表过程
1.定制表结构
2.添加约束 (唯一约束 检查约束 主键约束 外键约束 默认值约束)
3.伪造记录 测试数据
3.约束添加
主键约束
alter table grade
add constraint PK_GradeId Primary key grade(gradeid)
--删除主键
#取消主键列的自增,再删除主键
ALTER TABLE student MODIFY studentno INT
#删除主键
ALTER TABLE student DROP PRIMARY KEY
外键约束
alter table student
add constraint FK_Grade_Student_GradeId Foreign key (gradeid) referrences grade(gradeid)
---删除外键 界面上(图形化界面)直接点击无效 (1.先用如下命令删除 2.再点击鼠标删除)
alter table student
drop foreign key FK_Grade_Student_GradeId
唯一约束 年级名称唯一()
alter table grade
add constraint UK_Gradename UNIQUE Key(gradename)
---删除唯一约束
alter table grade
drop index UK_Gradename
默认值约束
alter table grade
alter column gradename set default 'X班'
--删除语法
alter table grade
alter column gradename drop default
检查约束 mysql中不起作用
alter table student
add constraint CK_GradeID Check(gradeid<7)
--无法删除
4.一个问题
有人不会设置外键?
解析:1.找到外键表 1的一方是主表
2.外键表中有非法数据
3.主外键表中公共列的类型必须相同
5. 默认值约束
alter table grade
alter column 列名 set default '默认值'
6.赵昌平 检查约束
7.什么是引擎?
解析:能让程序启动并执行的一个程序,也称之为驱动。
搜索引擎指自动从因特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。
因特网上的信息浩瀚万千,而且毫无秩序,所有的信息像汪洋上的一个个小岛,
网页链接是这些小岛之间纵横交错的桥梁,而搜索引擎,则为用户绘制一幅一目了然的信息地图,
供用户随时查阅。它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,
并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。
个人理解:在软件行业中,能给程序员提供工具类型的帮助的代码集锦等小工具。可以看成是一个引擎。
8.修改表
8.1 我有一张学生表
SQLServer 中 studentbak
select * into 新表名 from student
MYSql 中 studentbak
create table 新表
select * from 旧表
一次性向表中走N条记录
Sql Server:
insert into s2229(LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email)
select LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email from student
Mysql:
insert into s2229(LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email)
select LoginPwd, StudentName, Gender, GradeId, Phone, Address, Birthday, Email from student
删除 之delete 和Truncate 巅峰对决
VS1:delete 可以有where ,删除部分记录 ,Truncate 一删除所有记录
VS2: delete 删除后可以恢复,记录日志 Truncate 删除后不可恢复,不记录日志
VS3: delete 删除效率低一些 Truncate 删除速度快,效率高
VS4:delete 删除后编号会接着上次最大值 Truncate 截断表:编号从1开始
#主键约束 ALTER TABLE grade ADD CONSTRAINT PK_GradeId PRIMARY KEY grade(gradeid) -- 删除主键 #取消主键列的自增,再删除主键 ALTER TABLE student MODIFY studentno INT #删除主键 ALTER TABLE student DROP PRIMARY KEY #外键约束 ALTER TABLE student ADD CONSTRAINT FK_Grade_Student_GradeId FOREIGN KEY (gradeid) referrences grade(gradeid) #删除外键界面上(图形化界面) 直接点击无效(1.先用如下命令删除2.再点击鼠标删除) ALTER TABLE DROP FOREIGN KEY FK_Grade_Student_GradeId #唯一约束年级名称唯一() ALTER TABLE grade ADD CONSTRAINT UK_Gradename UNIQUE KEY(gradename) # 删除唯一约束 ALTER TABLE grade DROP INDEX UK gradename #默认值约束 ALTER TABLE grade ALTER COLUMN gradename SET DEFAULT'X班' # 删除默认值约束 ALTER TABLE grade ALTER COLUMN gredename DROP DEFAULT; #检查约束 ALTER TABLE student ADD CONSTRAINT CK_GradeID CHECK(gradeid<7) # 创建备份表 CREATE TABLE student2 SELECT *FROM student #修改表名 ALTER TABLE student2 RENAME student3 #添加字段 ALTER TABLE grade ADD result VARCHAR(32) NOT NULL #修改字段 ALTER TABLE student CHANGE idNumber identityCard CHAR(19) NOT NULL #删除字段 ALTER TABLE grade DROP result #插入单行数据 INSERT INTO student (loginPwd,studentName,sex,gradeID,phone,address,bornDate,email,identityCard) VALUES(111,'蚊','男',111111,11111111,'北京','1999-08-09','1234@qq.com','123454656'); #插入多行数据 INSERT INTO student (loginPwd,studentName,sex,gradeID,phone,address,bornDate,email,identityCard) VALUES(111,'蚊','男',111111,11111111,'北京','1999-08-09','1234@qq.com','123454656'), (2222,'周明','男',22222222,22222222233,'海淀','2001-09-09','123456@qq.com','12345678901');
--------------------------------------------------- #连接字符串 SELECT CONCAT ('1','2','3') #替换值 SELECT INSERT ('这是SQL Server数据库的',3,10,'my SQL') #全部变为小写 SELECT LOWER ('my SQL') #全部变为大写 SELECT UPPER ('my SQL') #截取 SELECT SUBSTRING('wwfdduu',3,6) #当前的日期 SELECT CURDATE(); #当前的时间 SELECT CURTIME(); #当前日期和时间 SELECT NOW(); #返回一年的第几周期 SELECT WEEK(NOW()); #返回日期的年份 SELECT YEAR(NOW()); #返回小时值 SELECT HOUR(NOW()); #返回分钟值 SELECT MINUTE(NOW()); #之间相隔的天数 SELECT DATEDIFF(NOW(),'2008-8-8'); #加上几天后的天数 SELECT ADDDATE(NOW(),5); #返回最小值的整数 SELECT CEIL(2.3); #返回最大值的整数 SELECT FLOOR(3.4); #0-1之间的随机数 SELECT RAND();