以mysql为例
可使用mysql -u root -p 输入在cmd中后输入密码便可进入
SQl语句
数据库语句
1. 查看现有数据库
show databases;
2. 新建数据库
create database aaa;
3. 选择数据库
use runoob;
4. 从.sql文件引入SQL语句
source
5. 删除数据库
drop database aaa;
表
6. 查看当前数据库中的表
show tables;
7. 创建新表
在写容量时需要注意容量的大小
create table zhangsan (id int,name varchar(255),sex varchar(255),age int)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.得加上面语句要不会报错
create table persons(
id int,
name varchar(255),
city varchar(255) );
2.
CREATE TABLE instructor ( ID CHAR(5), name VARCHAR(20) NOT NULL, dept_name VARCHAR(20), salary NUMERIC(8,2), PRIMARY KEY (ID), FOREIGN KEY (dept_name) REFERENCES department(dept_name));
在上面的例子中,我们创建了一个教员(instructor)表,该表的主键是ID,外键是教员所在的部门名称(dept_name),关联部门(department)表。此外,教员表还包括姓名(name)、薪水(salary)。其中,姓名有约束NOT NULL,表示姓名这一项不能空。
primary key 设置主键,foreing key(a)references name(a);外键关联name表里的a
3.可直接添加值
8. 概述表中的列
describe instructor;
9. 在表中插入新纪录
1.insert into name(id,name,sex,age)values(1,"张三","生产部",3600);
2.insert into name values(2,"aaaa","bbbbbbbb",13);//不写键时values值会默认顺序插入
10. 在表中更新记录
update name set name="b",sex="aaa" where id=2;
where为条件不设立的情况下表示更新所有数据
2.两个表a、b,想使b中的Name1字段值等于a表中对应id的name2值
update b set Name1 = a.name2 from a,b where a.id = b.id
11. 清空表
delete from persons;
清除表里的所有数据保留表文件
12. 删除表
drop table persons;
删除表文件
查询
select * from name;
在name表中找出所有的内容
select id,name from name;
在name表中找到id与name列;
14. SELECT DISTINCT
select distinct id,name from name;
过滤掉重复的值,当有两个列时只有两个列都有重复的值时才会被过滤
15. WHERE
通常是在指定一些特定条件时使用
可用于比较文本(text)数字(number)逻辑关系(and,or,not)
=,,=,<>(不等于!=),between(在什么之间),like(),in(为一列添加多个保证)
select * from name where name in ("a","b");
select * from name where age betweeb 13 and17;
16. GROUP BY
用于结合合计函数,常用于COUNT、MAX、MIN、SUM、AVG等聚合函数aggregate functions)
mysql> select id,sex,age from name group by id;
相当于把id查找后的进行分组去除重复的id
17. HAVING
having 与where最大的不同在于having是对group by进行设置条件
where是对行进行操作而经过了group by后是生成了表不可以在使用where
mysql> select id,sex,age from name group by id having age>15;
18. ORDER BY
对输出的结果进行一个排序没指明的情况下默认升序排(ASC(升序)或DESC(降序))
select * from name order by age Desc;
可对字母的字符串进行一个比对大小后进行升降排序
19. BETWEEN
between语句适用于指定区间
mysql> select * from name where name between "a" and "c";
在a,c之间 数值、文本或者日期。
20.注解like 运算符
在句子中使用运算符在列中搜索指定的模式:like where
通配符与运算符结合使用:通配符%(表示0与一个或者多个字符)_(表示一个单个字符)
运算符 and or
例如:select * from table where name like “ A%”
"A%"选择以A开头的所有name“%A”选择以A结尾的所有name“%or%”选择具有name且在任何位置具有or的name“_r%”选择所有第二个位置为人的name'a__%'选择以a开头且长度至少为3的naem'a%o'选择所有以a开头o结尾的name
eg:
select *from table where name not like “a%” //选择不以a开头的所有name
21. IN
在where语句中添加过滤条件
select * from name where name in(a,b);
在设定name条件后在查找name为a与b的值
22. JOIN
当我们的结果要从两个或者多个里面查找时使用join进行连接建立
数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
要在两个表都存在主键时使用
select * from name join name2 on name.id=name2.id ;列出所有内容
select *from name left outer join name2 on name.id=name2.id;
23. 视图
视图(view)是虚拟的SQL表。它包含行和列,和一般的SQL表格很类似。视图总是显示数据库中的最新数据
create view;
24. 聚合函数
我们之前已经提到聚合函数,这里列出最常用的一些聚合函数:
COUNT(列名) 返回行数SUM(列名) 返回指定列的值之和AVG(列名) 返回指定列的平均值MIN(列名) 返回指定列的最小值MAX(列名) 返回指定列的最大值
25. 嵌套子查询
在SQL中查询在嵌套查询使用select-from-where
SELECT DISTINCT course_id
FROM section
WHERE semester = ‘Fall’ AND year= 2009 AND course_id IN (
SELECT course_id
FROM section
WHERE semester = ‘Spring’ AND year= 2010
);
参考阅读
发表评论