第一大章
创建数据库
CREATE(创建) DATABASE(数据库) ace(数据库名字);
打开数据库
USE(打开) ace(数据库名字);
给表格
SHOW(显示) TABLES(所以列表名字);
创建表(用户名),id(ID),user(用户),password(密码),age(年龄),sex(性别),IsOk(是否有效)
CREATE TABLE users(列表名) (user_id(字段名字) INT(字段类型), user_name(字段名字) VARCHAR(字段类型)(20)(类型长度),
password (字段名字)VARCHAR(字段类型)(20)(字段类型长度), age(字段名字) VARCHAR((字段类型)20)(字段类型长度), sex(字段名字) VARCHAR(数据类型)(2)(类型长度),
IsOk(字段名字) INT(字段类型), binrthday (字段名字)DATETIME(字段类型));
插入一条数据
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名字),user_name(字段名字),password(字段名字),age(字段名字),sex(字段名字),IsOk(字段名字)) VALUES(给字段赋值) (111(字段信息),'x(字段信息)','111222(字段信息)','50(字段信息)','n(字段信息)',1(字段信息));
查询
SELECT(选择) *(星号是多个意思) FROM(来自) users(列表名);
DESCRIBE(叙述) users(列表名);
更新
UPDATE(更新) users(列表名) SET(安置) user_name(字段类型)='n(字段信息)' WHERE(到哪里) user_name(字段类型)='x(字段信息)';
删除一条数据
DELETE(删除) FROM(来自) users(列表名) WHERE(到哪里) sex(字段名)='n(字段信息)';
在修改自增值时要注意先增加主键
ALTER(改变) TABLE(目录) users(列表名) ADD(增加) CONSTRAINT(自增值) PK_users(主键名) PRIMARY(主要) KEY(键、要是)(user_id(字段名));
增加自增值的命令
ALTER(改变) TABLE(目录) users(列表名) MODIFY(修改) user_id(字段名) INT(字段类型) AUTO_INCREMENT(自增值);
默认值
ALTER(改变) TABLE(目录) users(列表名) MODIFY(修改) IsOk(字段名) INT(字段类型) NOT NULL(不能为空) DEFAUIT(默认值) 0(默认值设置为0);
第二大章
使用自增值后插入数据但是里面不带有(user_ID,IsOk)
INSERT(插入) INTO(进入) users(列表名)
(user_name(字段名),password(字段名),age(字段名),sex(字段名))VALUES(给字段赋值)('zhaoer(字段信息)','334322(字段信息)','31(字段信息)','v(字段信息)');
把两个字段修改成一个可以为空 一个不能为空 在不能为空的字段内不写数据看它的报错
INSERT(插入) INTO(进入) users(列表名)
(user_name(字段名),password(字段名),age(字段名),sex(字段名),family_id(字段名))VALUES(给字段赋值)('wangwu(字段信息)','44556(字段信息)',20(字段信息));
错误的语句
INSERT(插入) INTO(进入) users(列表名)
(user_name(字段名),password(字段名),age(字段名),sex(字段名),family_id(字段名))VALUES(给字段赋值)('wangwu(字段信息)','44556(字段信息)',20(字段信息),'v(字段信息)',1(字段信息));
正确的语句
新建一个家庭表两个字段ID 家庭名(英文)
CREATE(创建) TABLE(目录) family(列表名) (family_id(字段名) INT(字段类型),family_name(字段名) VARCHAR(字段类型)(10)(字段类型长度));
INSERT(插入) INTO(进入) family(列表名) (family_name(字段名))VALUES(给字段赋值)('jiangjia(字段信息)');
ALTER(改变) TABLE(目录) family(列表名) ADD(增加) CONSTRAINT(强制) PK_family(主键名) PRIMARY(主要) KEY(键、钥匙)(family_id(字段名));
创建主键
ALTER(改变) TABLE(目录) family(列表名) MODIFY(修改) family_id(字段名) INT(字段类型) AUTO_INCREMENT(自增值);
自增值
CREATR(创建) TABLE(目录) users(列表名)(
user_id(字段名) INT(字段类型) NOT NULL(不能为空) AUTO_INCREMENT(自增值) PRIMARY(主要) KEY(键、钥匙),Marry(字段名) INT(字段类型) DEFAUIT(默认值) 0(默认值设置为空0));
在创建表是主键和默认值同时增加进入再把默认值加进去
users表新增一个字段叫家庭ID
ALTER(改变) TABLE(目录) users(列表名) ADD(增加) family_id(字段名) INT(字段类型) NOT NULL(不能为空);
作一个关联查询 当然要把users里面的数据补充完整
SELECT(选择) *(星号代表多个) FROM(来自) users(列表名) LEFT(左) JOIN(连接) family(列表名) ON(向) users(表名).family_id(字段名) = family(列表名).family_id(字段名);
左连接
左连接会把jiangjia 和 wanjia 的数据全都显示出来
SELECT(选择) * FROM(来自) users(列表名) RIGHT(右) JOIN(连接) family(列表名) ON(向) users(列表名).family_id(字段名) = family(列表名).family_id(字段名);
右连接
有连接只会把jiangjia的数据信息显示出来
SELECT(选择) * FROM(来自) users(列表名) INNER(内) JOIN(连接) family(列表名) ON(向) users(列表名).family_id(字段名) = family(列表名).family_id(字段名);
内连接
内连接也是现在显示出跟右连接一样的效果
增加一个字段
ALTER(改变) TABLE(目录) users(列表名) ADD(增加) family_id(字段名) INT(字段类型) NOT NULL(不能为空);
第三大章
将users里面的family_id删除
ALTER(改变) TABLE(目录) users(列表名) DROP(删除) COLUMN(列) family_id(字段名);
将users表内的整个family_id字段全部删除
将是家人认识的人全部加入users表详细资料
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(给字段赋值)(105(字段信息),'chenpeng(字段信息)',13(字段信息),37(字段信息),'n(字段信息)','1976-01-01(字段信息)');
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(给字段赋值)((106(字段信息),'chenmihua(字段信息)',14(字段信息),56(字段信息),'n(字段信息)','1956-01-01(字段信息)');
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(107(字段信息),'jianglanying(字段信息)',14(字段信息),54(字段信息),'v(字段信息)','1958-01-01(字段信息)');
INSERT(插入) INTO(进入)users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(108(字段信息),'luzhongping(字段信息)',15(字段信息),52(字段信息),'n(字段信息)','1960-01-01(字段信息)');
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(109(字段信息),'jiangxiuying(字段信息)',16(字段信息),50(字段信息),'v(字段信息)','1962-01-01(字段信息)');
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(1010(字段信息),'wanshanfeng(字段信息)',17(字段信息),49(字段信息),'n(字段信息)','1963-01-01(字段信息)');
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(1011(字段信息),'jiangjianying(字段信息)',18(字段信息),48(字段信息),'v(字段信息)','1965-01-01(字段信息)');
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(1012(字段信息),'liuhaixiang(字段信息)',19(字段信息),47(字段信息),'n(字段信息)','1967-01-01(字段信息)');
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(1013(字段信息),'jiangjianlan(字段信息)',19(字段信息),47(字段信息),'v(字段信息)','1969-01-01(字段信息)');
INSERT(插入) INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(1014(字段信息),'xinzhiqiang(字段信息)',20(字段信息),46(字段信息),'n(字段信息)','1971-01-01(字段信息)');
INSERT(插入)INTO(进入) users(列表名) (user_id(字段名),user_name(字段名),password(字段名),age(字段名),sex(字段名),binrthday(字段名))
VALUES(值)(1015(字段信息),'jiangyulan(字段信息)',21(字段信息),46(字段信息),'v(字段信息)','1971-01-01(字段信息)');
将她们所在的家庭全部增加进入familys表内
INSERT(插入) INTO(进入) familys(列表名) (family_id(字段名),family_name(字段名))
VALUES(值)(22(字段信息),'chenjia(字段信息)');
INSERT(插入) INTO(进入) familys(列表名) (family_id(字段名),family_name(字段名))
VALUES(23,'lujia');
INSERT(插入) INTO(进入) familys(列表名) (family_id(字段名),family_name(字段名))
VALUES(值)(24(字段信息),'wanjia(字段信息)');
INSERT(插入) INTO(进入) familys(列表名) (family_id(字段名),family_name(字段名))
VALUES(值)(25(字段信息),'xinjia(字段信息)');
INSERT(插入) INTO(进入) familys(列表名) (family_id(字段名),family_name(字段名))
VALUES(值)(26(字段信息),'liujia(数据信息)');
创建一个第三方表FamilyUser里面有三个数据id users_id family_id把前两章表的id都进来
CREATE(创建) TABLE(目录) FamilyUser(列表名) (familyuser_id(字段名) INT(字段类型) NOT NULL(不能为空) AUTO_INCREMENT(自增值) PRIMARY(主要) KEY(键、钥匙),user_id(字段名) INT(字段类型),family_id(字段名) INT(字段类型));
创建FamilyUser表
INSERT(插入) INTO(进入) FamilyUser(表名) (user_id(字段名),family_id(字段名))
VALUES(值)(101(字段信息,24(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(102(字段信息,25(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(103(字段信息,26(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(104(字段信息,23(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(105(字段信息,23(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(106(字段信息,23(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(107(字段信息,21(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(108(字段信息,23(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(109(字段信息,21(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(1010(字段信息,24(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(1011(字段信息,21(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(1012(字段信息,26(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(1013(字段信息,21(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(1014(字段信息,25(字段信息);
INSERT(插入) INTO(进入) FamilyUser(列表名) (user_id(字段名),family_id(字段名))
VALUES(值)(1015(字段信息,21(字段信息);
用多对多的关联查询实现出 用户名ID 用户名 家庭名字
SELECT(选择) users(列表名).user_id(字段名),users(列表名).user_name(字段名),familys(列表名).family_name(字段名) FROM(来自) users(列表名) LEFT(左) JOIN(连接诶) familyuser(列表名) ON(向) users(列表名).user_id(字段名) = familyuser(列表名).user_id(字段名) LEFT(左) JOIN(连接) familys(列表名) ON(向) familyuser(列表名).family_id(字段名) = familys(列表名).family_id(字段名);
通过左连接完成所需要的查询
在MYSQL 有多少种字段类型 分别多长 对应java里的类型有多少种写在一张单独博客里
索引的作用
索引就想数据库里面的目录在没有时候你要一片一片的查有了索引
你就可以直接去看目录就知道在多少片有你要找的东西了
就是让复杂的关联查询变快了
ALTER(改变) TABLE(目录) familyuser(列表名) ADD(增加) INDEX(索引) (family_id(字段名)) ;
创建一个索引
SELECT(选择) name_id(字段名),family_id(字段名) FROM(来自) familyuser(列表名) WHERE(到哪去) family_id(字段名) = 21(字段信息);
查询的索引我创建了一个family_id的索引那么family_id它在查询时会
出现在索引文件里只有一行就是family_id通过找到对应的21在出现你要显示的信息
索引值它会自动排序的
ALTER(改变) TABLE(目录) family(列表名) RENAME(改名) TO(技术观察) familys(列表名);
修改表名
第四大章
在users表里创建一个索引 索引有什么好处有什么坏处
ALTER(改变) TABLE(目录) users(列表名) ADD(增加) INDEX(索引) (user_name(字段名));
创建索引
索引的好处
索引的好处就是可以在众多的信息中用最快的速度的找到你所需要的信息并且可以自动为我进行排序,索引就想是目录在众多的数据信息当中标注出需要查找的数据信息。
索引的坏处
索引的文件会占内存的磁盘空间,如果索引做的太多了的话可能索引文件会比数据文件更快的达到最大文件尺度。索引文件加快了收索但是增加了插入和删除的时间和更新索引列中的值的时间。
用users表完成统计数据库有多少行 所有人的年龄加起来有多少岁 根据familys表统计出
一共有多少人
SELECT(选择) COUNT(测验)(*)(星号表示多个) FROM(来自) users(列表名);
查询一个表里有多少行
SELECT(选择) SUM(计算)(age)(年龄) FROM(来自) users(列表名);
算出age的总合
SELECT(选择) COUNT(测验)(*)(星号表示多个)FROM(来自) users(列表名) LEFT(左) JOIN(连接) familyuser(列表名) ON(向) users(选择).user_id(字段名) = familyuser(列表名).user_id(字段名) LEFT(左) JOIN(连接) familys(列表名) ON(向) familyuser(列表名).family_id(字段名) = familys(列表名).family_id(字段名);
统计出有多少人
将users familys familyuser表的备注填写完整 主要的内容是是否增加主键、自增值、默认值、索引
users表
字段名 数据类型 长度 备注
name_id INT 11 主键、自增值
user_name VARCHAR 20 索引
password VARCHAR 20 Null
age VARCHAR 20 Null
sex VARCHAR 2 Null
IsOk INT 11 默认值
familys表
字段名 数据类型 长度 备注
family_id INT 11 主键、自增值
family_name VARCHAR 10 Null
familyuser表
字段名 数据类型 长度 备注
familyuserid INT 11 主键、自增值
family_id INT 11 Null
user_id INT 11 Null
7、在执行查询语句的时候选择性的需要多少行比如有10行只需要前面5行或者后面5行或者中间5行
SELECT(选择) haoduo_id(字段名) , haoduo_name(字段名) FROM(来自) haoduo(列表名) WHERE(到哪里) haoduo_name(字段名)='i(字段信息)' LIMIT(批量管理) 0,5(0到5);
意思是说我要查询 haoduo表里的 haoduo_id 和 haoduo_name 要求 haoduo_name等于
i 我需要的限度
第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)
它是以一种返回的方式出现 而不是已一种显示的方法出现
ALTER(改变) TABLE(目录) users(列表名) DROP(删除) COLUMN(列) remark((字段名);
删除字段
第五大章
对比表里人的年龄取一个70年到80年之间的年龄包括70年不包括80年也是70年到79年之间的年份。
SELECT(选择) user_name(字段名) , binrthday(字段名) FROM(来自) users(列表名) WHERE(到哪里) binrthday(字段名)>='1970-01-01(字段信息)' AND(并且) binrthday(字段名) <'1981-01-01(字段信息)';
date型需要加''号
对比两个人生日(插入一行生日用英文)比较两个人年龄的大小显示出较大的一方年龄
SELECT(选择) max(最多)(age)(年龄) FROM(来自) users(列表名) WHERE(到哪里) user_name(字段名)='chenpeng(字段信息)'OR(或者) user_name(字段名)='jianglanying(字段信息)';
两个人的年龄进行对比取最大的显示出来
重新学习视图和存储过程今天完成
视图隐藏了底层的表结构,简化了数据访问操作因为隐藏了底层的表结构,所以大大加强了安全性,用户只能看到视图提供的数据
使用视图,方便了权限管理,让用户对视图有权限而不是对底层表有权限进一步加强了安全性
视图提供了一个用户访问的接口,当底层表改变后,改变视图的语句来进行适应,使已经建立在这个视图上客户端程序不受影响
普通视图(Regular(有规律的) View(视图))
CREATE(创建) VIEW(视图) v_Test_View1(视图名)
AS (换成)
SELECT(选择) TOP(顶) 100 *(多个) FROM(来自) HumanResources(休曼来源).Employee(雇工)
SELECT(选择) *(多个) FROM(来自) v_Test_View1(视图名)
索引视图(Indexed(编入索引) View(视图))
CREATE(创建) VIEW(视图) v_Test_IndexedView(视图名)
WITH(和) SCHEMABINDING (计划捆绑住)
AS (换成)
SELECT(选择) p(列表名).Name(字段名),s(列表名).OrderQty(字段名),s(列表名).SalesOrderDetailID
(字段名)FROM(来自) Production(列表名).Product p(字段名)
inner(内) join(连接) Sales(列表名).SalesOrderDetail s(字段名)
ON(向) p(列表名).ProductID(字段名)=s(列表名).ProductID(字段名)
GO
CREATE(创建) UNIQUE(统一查询) CLUSTERED(成群的) INDEX(索引) indexedview_test1(列表名)
ON(向) v_Test_IndexedView(列表名)(SalesOrderDetailID(字段名))
分割视图(Partitioned(分段的) View(视图名))
CREATE(创建) VIEW(视图) v_part_view_test(视图名)
AS (换成)
SELECT(选择) *(多个) FROM(来自) Employee100 (雇工100)
UNION (友联)
SELECT(选择) *(多个) FROM(来则) Employee200 (雇工200)
SELECT(选择) *(多个) FROM(来自) v_part_view_test (视图名)
WHERE(到哪里) EmployeeID(字段名)=105(字段信息)
CREATE(创建) VIEW(视图) v(视图名) AS(换成) SELECT(选择) *(星号是多个的意思) FROM(来自) user_id(users表里的user_id字段名内的信息);
创建视图列表
SELECT(选择) *(星号多个意思) FROM(来自) v(视图名);
查询视图列表
DROP(删除) VIEW(视图) v(视图名);
删除视图列表
写一个存储过程可以传入变量 参照自己的表写出来
DELIMITER //
CREATE PROCEDURE proc1(OUT s int)
BEGIN
SELECT COUNT(*) INTO s FROM user;
END
//
DELIMITER ;
SET @p_in=1;
CALL demo_in_parameter(@p_in);
SELECT @p_in
1、输入
输入里面分两种 1.1、验证,没输入、输出不合规范,超标
1.2、反馈、错了、超标、不符合规范
2、处理
处理里面分两种 2.1、逻辑结果正确
2.2、算法速度加快
3、输出结果
输出结果分两种 3.1、格式(XML、Json、对象)
3.2、验证最后的结果是否正确
以终为始:意思是要你的终点来做你的起点高要求对自己。
数据备份和恢复的学习尝试数据备份回复数据学习
CREATE(创建) TABLE(目录) iii(原本存在的数据库).newusers(创建是一个新表) LIKE(模糊查询) ace(原本存在的数据库).users(原本存在的表) ;
备份数据就是将数据进行表格化存储在硬盘内可以更好保护重要的数据
INSERT(插入) INTO(进入) iii(数据库名).newusers(备份的表) SELECT(选择) *(星号代表多个) FROM(来自) ace(数据库名).users(列表名) ;
回复数据是将一些有用的数据回复出来。
USE(开打) ace(数据库名);SELECT(选择) *(*号多个意思) FROM(来自) users(列表名) INTO(进入) OUTTFILE(备份) "d:/bdacc.txt";
备份数据库里的列表