数据库基本指令.docx
《数据库基本指令.docx》由会员分享,可在线阅读,更多相关《数据库基本指令.docx(13页珍藏版)》请在冰豆网上搜索。
数据库基本指令
连接:
D:
→cdD:
\programFiles\MySQL\MySQLServer5.5\bin
→mysql-uroot-proot
编码:
查看当前的字符编码:
showvariableslike‘char%’;
修改字符编码:
setcharacter_set_database=’gbk’;
setcharacter_set_database='gbk';
setcharacter_set_client='gbk';
setcharacter_set_connection='gbk';
setcharacter_set_filesystem='gbk';
setcharacter_set_server='gbk';
setcharacter_set_results='gbk';
setcharacter_set_database='gbk';
库:
查看已建数据库名称:
showdatabases;
createdatabasecdi2charactersetutf8collateutf8-bin;//同时设置字符集和校对规则
新建一个数据库名字叫cdi:
createdatabasecdi;
删除数据库cdi:
dropdatabasecdi;
使用/切换数据库cdi:
usecdi;
查看当前使用的数据库名字:
selectdatabase();
查看字符集和校对规则:
showcreatedatabases库名字;
设置字符集和校对规则:
alterdatabasecdicharactersetutf8collateutf8_bin;
表:
新建表
createtablecdi2(
姓名char(6)notnullprimarykey,
Snamevarchar(20)UNIQUEnull,
学号char(8)notnull//最后一个不能有分号
);
Key为mul:
先正常设置,然后altertablecdi2addindex(学号);
设置两个主键
createtablecdi2(
姓名char(6)notnull,
学号char(8)notnull,//最后一个不能有分号
PRIMARYKEY(姓名,学号)
);
新建复制结构:
createtablecdi2_copy_likelikecdi2;//把cdi2的格式复制过去
新建复制结构和内容:
createtablecdi2_copy_asas(select*fromcdi2);
删除表:
droptablecdi2;
查看cdi2(某个表)的格式:
describecdi2;
改表名:
renametablecdi2tocdi3;
修改表数据类型、长度、约束:
altertablecdi2modify姓名tinyintnotnull;
修改列名称:
altertable表名change旧列名称新列名称类型(长度)约束。
修改表的字符集:
aliertable表名characterset字符集;
添加奖学金,删除学号:
altertablecdi2add奖学金cahr(6)notnull,dropcolumn学号;
记录:
显示全部表名:
showtables;
插入记录:
insertintocdi2values(“Name”,”123456789”);//日期要用单引号
插入一部分列值:
insertintocdi2(列名1,列名2,列名3)value(1,12,45);
表中删除记录:
deletefromcdi2where姓名=’Name’;
查看cdi2(某个表)的记录:
select*fromcdi2;
清空表数据:
truncatetablecdi2;
修改记录:
updatecdi2set奖学金=’22’where学号=2;
全部修改:
updatecdi2set奖学金=’22’;
两种删除全部记录的区别:
deletefromuser;一条一条地删除;
truncatetableuser:
把表一次性删除,然后再创建一个一样的表。
date的插入格式:
图片的插入格式
太久没启动的bug
1、win+r然后输入:
services.msc
2、接着选择mysql,手动开启
3、如第二步中没有则,管理员运行cmd
4、cmd进入到mysql的安装目录,然后执行mysqld--install
5、然后开启服务器netstartmysql
字符集乱码问题
cmd中查看字符集相关的参数showvaribleslike%character%;
修改客户端的编码:
重启mysql
第三章
1、输出:
select列名称[as列别名],列名称[列别名]from表名[where条件];
如:
select学号asnumber,姓名asnamefromxswhereid=”1212”;
注意:
标题中的别名含有空格时,要用单引号引起来,如’studentname’
2、输出,根据原有的数据,显示一个新的列,列的值按照原数据进行分类。
else可有可无。
图中等级一列不是表的内容。
修改密码:
1、停用mysql服务,win+r然后输入:
services.msc,进行停止
2、在cmd中输入mysqld--skip-grant-tables进行启动(跳过认证进行启动)
3、重新开启一个cmd,然后进入到目录下,然后mysql-uroot-p,不输入密码直接回车。
4、修改密码。
usemysql;->updateusersetpassword=password(‘newpassw’)whereuser=‘root(用户名)’;
5、结束mysqld的进程,ctrl+alt+delete-->详细信息中结束,然后重新启动mysql
数据库备份:
1、以管理员身份cmd,
输入:
mysqldump-uroot-pweb_test1>C:
/web_test1.sql
2、还原
第一种方法:
1)进入sql内部,然后新建一个表
2)新开一个管理员cmd,进行还原
第二种方法
1)进入sql内部,然后新建一个表
2)新建完表后,切换数据库,还原
多表连接
给表employee的dno添加一个外表约束,约束为dept的did;(dno中值的范围必须在did中)
多表设计
一对多
多对多
一对一
表的设计
1、学生和班级之间是一对多的关系。
学生表添加班级字段外键引入班级表。
2、学生和课程之间是多对多的关系,且课程有分数。
多表查询
示例:
1、内连接
select*fromclassc,studentswherec.cid=s.sid;
2、外连接
1)左外连接
显示全左部表的全部数据
2)右外连接
显示全右部表的全部数据
区别:
子查询
in
作用:
把一各查询的结果作为来一个查询的条件
示例:
获取张三所在班级的总人数
selectcnumfromclasswherecidin(selectcnofromstudentwheresname="张三");
exists
作用:
判断括号内是否为true,如果为true则运行前面的语句,否则不允许。
any()
作用:
其中任意一个值
示例:
获取cid大于任意一个sid的值的信息。
(自动选取最小的)
all
作用:
内部所有的
示例:
大于1、2、3的所有学生iD。
事物
脏读
1、开启两个cmd并同时开启事物。
starttransaction;