MySQL常用代码 笔记

MySQL
一、数据库常见的种类
PL/SQL:Oracle、DB2
T/SQL:SQL Server、MySQL、SQLite、Sybase
二、SQL语法
insert:插入
delete:删除
update:更新
select:查询
三、常用MySQL命令
1、打开数据库
use database(数据库名);
2、查询当前打开的数据库中有哪些数据表
通过默认的数据库系统属性,来查看是否存在表格
查询指定的表内容
select *(所有内容) from (来自于) db.tables;
查询数据库中所有表
show tables;
3、创建一个数据表
create table 表名(字段1 数据类型,字段2 数据类型,....,字段n 数据类型);

create table person(id(字段:序号) int(数据类型:整型(1,2,3,4)) primary key(主键,能够唯一标识该条记录的属性) ,pname(字段:人员姓名) varchar(20)(字符串,长度20个字母),university(字段:院校) varchar(30)(字符串,长度30),phone(字段:联系方式) varchar(11)(字符串,长度11));
4、添加一条数据
insert into 表名(字段1,字段2,...,字段n) values(字段1值,字段2值,...,字段n值);

insert into 表名 values(字段1值,字段2值,...,字段n值);

5、查看一个表结构
desc table(表名);

6、修改表中的字段内容
update 表名 set 字段1=字段新内容,字段2=字段新内容,...,字段n=字段新内容 where(条件) 主键=主键值;

7、删除一条记录
delete from 表名 where 主键=主键值;

作业说明:
student表:sno int,sname varchar,sage int,ssex int
course表:cno int,cname varchar,tno int
score表:sno int(学生编号) ,cno int,score 成绩
teacher表:tno int,tname varchar

二、MySQL数据库操作命令
1、MySQL登入登出命令
在数据库中有两种身份:管理员、普通用户
登出命令:quit或exit;
登入命令:mysql -u用户名 -p密码;
2、显示当前MySQL中有多少个数据库
show databases;
3、创建一个数据库
create database 数据库名;
4、删除一个数据库
drop database 数据库名;
5、显示当前打开的数据库名
select database();
6、数据表结构的修改,这些操作都是不可逆的。
修改表的字段名称
alter table 表名 change 旧字段名 新字段名 类型;

修改表的字段类型
alter table 表名 change 字段名 字段名 类型;

添加表的一个字段
alter table 表名  add column 新字段名 类型;

删除表的一个字段
alter table 表名 drop column 字段名;

7、修改表名
rename table 旧表名 to 新表名;

8、查询数据
查询所有数据
select * from 表名;

查询部分数据
select (字段1,字段2,...,字段n) from 表名;

指定别名
select 字段 as 想要显示的名字 from 表名;

查询条件 where:
select 字段 from 表名 where 查询条件;

排序:
select * from 表名 [where] order by 字段 desc/asc;

分组

注意事项:
1、在查询语句中,条件的值是区分大小写的。
select price from goods where gname='tv';
select price from goods where gname='TV';
2、在条件查询中,不等于可以书写为!=或<>都是正确
的。
3、在排序中,order by字句按照查询排序字段内容的字母顺序,或者是字典顺序。
4、在分组字句中,经常配合统计函数使用
常见的统计函数:
sum(字段):求和
avg(字段):求平均值
max(字段):求最大值
min(字段):求最小值
count(*/字段):求记录总数
需要注意的是,在分组字句使用时,前面的select字句中只能跟随分组条件字段或统计函数。
5、统计函数不能在where子句中进行使用。必须在having中进行使用。另外,having一般都和group by联合使用,通常放在group by后面。
6、limit:分页子句。
limit 起始位置,偏移量:表明从指定的起始位置开始取几条记录。通常起始位置都是从0开始的。
limit 偏移量:表明从0开始,一次取几条记录。

三、多表查询
1、别名
在数据库中,别名分为列别名和表别名。其中,列别名主要负责在查询结果中以自定义内容代替原有列名。
2、自连接:属于特殊的等值连接。只是左右两张表都是同一张表内容。
select 字段1,字段2,...,字段n from emp work,emp manager
where work.mgr=manager.eno
3、子查询
主要用于三个地方:
第一,用在where子句中,作为条件的值来使用
第二,用在having子句中,作为统计函数的值来使用
第三,用在from子句中,作为中间结果使用。


表别名主要负责简化表名,方便查询。
2、连接方式
等值连接:即在条件中左表中的某一个字段等于右表中某一个字段。
select 字段1,字段2,...,字段n from table1 ,table2 where table1.字段= table2.字段;
select 字段1,字段2,...,字段n from table1  join table2 on table1.字段= table2.字段;
外连接:即左右两张表中,有一张表中的记录关联字段为null,导致进行等值连接时无法查看该条记录。为了解决这个问题,我们通常使用外连接,不仅能够显示关联字段存在的记录,还能够将关联字段为空的记录同时显示出来。
select 字段1,字段2,...,字段n from table1(不匹配记录在table1中) left (outer) join table2 on table1.字段= table2.字段;
字段(+)=字段 左连接
字段=字段(+)右连接

select 字段1,字段2,...,字段n from table1,table2 where table1.字段 (+)= table2.字段;

select s.s#, s.sname from student s
where s.s# not in(select sc.s# from student,course,sc,teacher where teacher.tname='叶平' and student.s#=sc.s# and sc.c#=course.c# and course.t#=teacher.t#);
行变列:
select username,max(case subject when '语文' then score else 0 end) as '语文' from scores group by username;
















你可能感兴趣的:(MySQL)