@Tean
2017-07-19T08:00:47.000000Z
字数 7151
阅读 1399
mysql
SQL:结构化查询语言
Oracle(甲骨文) - javaMySQL- phpSQL Server(微软) - asp.net(C#)DB2SQLiteAccess
MongDB
- 数据库(database)
- 表(table)
- 记录
下载后安装,见word文档
查看有哪些数据库:
show databases;
进入/切换数据库:
use 数据库名称;
查看当前数据库下有哪些表:
show tables;
查看表结构:
desc 表名;
连接本机:
mysql -u 用户名 -p
连接其它服务器(需要开启授权远程登录):mysql -h ip地址 -u 用户名 -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;FLUSH PRIVILEGES;
Navicat for MySQL
建库、建表、建约束
增、删、改、查SQL
- DDL:数据定义语言:CREATE、ALTER
- DCL:数据控制语言
- DML:数据操作语言:INSERT、DELETE、UPDATE
- DQL:数据查询语言:SELECT
-- db_name:数据库名称CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE 表名 (列名1 数据类型 (大小) 属性1 属性2,列名2 数据类型 (大小) 属性1 属性2,...);
例子:
create table user (id int primary key auto_increment,name varchar (30) not null,password varchar(30) not null);-- primary key => 主键-- auto_increment => 自动增长-- not null => 非空
INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);-- 如果值是字符串类型的,那么要加单引号引起来
例子:
insert into user (id, name, password) values (2, 'root', '1234');-- 因为id是自动增长列,所有可以写defaultinsert into user (id, name, password) values (default, 'usr', '123456');insert into user (name, password) values ('sa', 'sa');-- 当所有的列都要插入数据时,可以省略列名;注:值的顺序一定要和表中列名顺序一致insert into user values (default, 'sb', 'asdfg');
DELETE FROM 表名 WHERE 条件;
例子
delete from user where name='sb';
UPDATE 表名 SET 列1=值1, 列2=值2,... WHERE 条件;
例子
-- 修改root的密码为duangUPDATE user SET password='duang' WHERE name='root';-- 修改id为6的用户名为:admin 密码设置为:helloupdate user set name='admin', password='hello' where id=6;
SELECT 列1, 列2, ... FROM 表名 WHERE 条件;
例子:
select id, name, password from user;select name from user;select * from user;select * from user where name='admin';select * from user where id >= 6;-- 查询年龄在20-23岁的学生select * from student where age >= 20 and age <= 23;select * from student where age between 20 and 23;-- 查询年龄在20岁以下及23岁以上的学生select * from student where age < 20 or age > 23;-- 查询年龄不是21岁的学生select * from student where age != 21;select * from student where age <> 21;
select 列名 from 表名 where 列名 like '%关键字%';
select 列名 from 表名 order by 列名 [asc/desc];-- asc:升序,默认值-- desc:降序
select * from 表名 limit x,y;-- x : 开始位置,从0开始的-- y : 个数
- AVG( ) : 平均值
- MAX( ) : 最大值
- MIN( ) : 最小值
- SUM( ) : 总和
- COUNT( ) : 个数
select 函数名(列名) from 表名;
select 列名 from 表名 group by 列名 having 条件;
-- 创建数据库CREATE DATABASE suibian DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;-- 切换到suibian数据库use suibian;-- 建表create table student(id int primary key auto_increment,name varchar(30) not null,age int,gender varchar(10) default '男',height decimal(4,2),class varchar(20));-- 向表中插入若干条数据insert into student (id, name, age, gender, height, class) values (10000, '法海', 23, '男', 1.49, 'BP1701');insert into student (name, age, height, class) values ('许仙', 18, 1.76, 'BP1702');insert into student values (default, '拉登', 45, '男', 1.78, 'BT1701');insert into student values (default, '九天', 65, '女', 1.38, 'BP1701');insert into student values (default, '王母', 13, '女', 1.54, 'BT1701');insert into student values (default, '宇笛', 34, '男', 1.67, 'BP1703');insert into student values (default, '张三', 24, '男', 1.88, 'BP1701');insert into student values (default, '李四', 61, '女', 1.91, 'BT1701');insert into student values (default, '王五', 18, '男', 1.24, 'BP1702');insert into student values (default, '赵六', 27, '女', 1.47, 'BT1701');insert into student values (default, '佳琪', 33, '男', 1.69, 'BP1701');insert into student values (default, '孙八', 42, '女', 1.62, 'BT1701');insert into student values (default, '照旧', 19, '女', 1.73, 'BP1702');insert into student values (default, '田七', 26, '男', 1.98, 'BP1701');insert into student values (default, '立刻', 28, '男', 1.58, 'BT1701');-- 查询所有数据select * from student;-- 修改 '佳琪'的性别为女update student set gender='女' where name = '佳琪';-- 删除 身高为1.24的学员delete from student where height=1.24;-- 查询所有的女生select * from student where gender = '女';-- 查询年龄大于20岁的学员select * from student where age > 20;-- 查询年龄在22~40之间的学员select * from student where age >= 22 and age <= 40;select * from student where age between 22 and 40;-- 查询年龄大于40岁或身高小于1.7的学员select * from student where age > 40 or height < 1.7;-- 查询非BP1701班的学生姓名和班级select name, class from student where class != 'BP1701';select name, class from student where class <> 'BP1701';-- 查询所有姓李的学生select * from student where name like '%李%';-- 按照年龄升序排序select * from student order by age asc;-- 查询所有男生,并按照身高降序select * from student where gender='男' order by height desc;-- 获取身高最高的三个学生select * from student order by height desc limit 0, 3;select * from student order by height desc limit 3;-- 获取最大的年龄是多少select max(age) from student;-- 获取BP1701班学生个数select count(*) from student where class='BP1701';-- 查看有几种班级select class from student group by class;-- 获取男女学生人数select count(gender), gender from student group by gender;-- 每个班级的人数select class, count(class) from student group by class;-- 获取班级人数大于2个的班级名称及人数select class, count(class) from student group by class having count(class) > 2;-- ---------------------------------------------------------------------------------------- 切换到companydbuse companydb;show tables;-- ----------------------------------------------- 查询员工的姓名和其所在部门名称select emp.name as "员工姓名", dept.name as "部门名称" from emp, dept where emp.deptid = dept.id;select emp.name "员工姓名", dept.name "部门名称" from emp, dept where emp.deptid = dept.id;select emp.name, dept.name from emp, dept where emp.deptid = dept.id;select emp.name, dept.name from emp join dept on emp.deptid = dept.id;-- 查询开发部的所有员工姓名和薪资,按照薪资降序select emp.name, emp.salary from emp, dept where emp.deptid = dept.id and dept.name = '开发部' order by salary desc;select emp.name, emp.salary from emp join dept on emp.deptid = dept.id where dept.name = '开发部' order by salary desc;select e.name, e.salary from emp e, dept d where e.deptid = d.id and d.name = '开发部' order by salary desc;-- 子查询select name, salary from emp where deptid = (select id from dept where name = '开发部');-- 查询年龄最大的员工的信息select * from emp, dept where emp.deptid = dept.id order by age desc limit 1;select * from emp, dept where emp.deptid = dept.id and emp.age = (select max(age) from emp);-- 查询开发部工资大于平均薪资的员工姓名和薪资select emp.name, emp.salary from emp, dept where emp.deptid = dept.id and emp.salary > (select avg(salary) from emp) AND dept.name = '开发部';
-- 1. 创建表:-- 员工表(emp):-- 编号:id 主键 自动增长-- 姓名:name 字符串,长度25-- 薪水:salary 整数-- 部门编号:deptid 整数,引用部门表的id-- 性别:gender 字符串,长度10-- 年龄:age 整数---- 部门表(dept):-- 编号:id 主键,自动增长-- 名称:name 字符串,长度20-- 描述:info 字符串,长度200-- 建部门表-- 建员工表-- 1. 向员工和部门表中插入若干数据-- 2. 查询所有员工信息select * from emp, dept where emp.deptid = dept.id;-- 3. 查询薪水在3000~5000的员工姓名和年龄select name, age from emp where salary >= 3000 and salary <= 5000;select name, age from emp where salary between 3000 and 5000;-- from form alter alert test text true ture-- 4. 查询薪资小于3000和薪资大于8000的员工select * from emp where salary < 3000 or salary > 8000;-- 4. 查询年龄小于30岁的员工,并按照年龄降序排序select * from emp where age < 30 order by age desc;-- 5. 查询所有员工姓名和其所在的部门名称select emp.name, dept.name from emp, dept where emp.deptid = dept.id;select emp.name, dept.name from emp join dept on emp.deptid = dept.id;select emp.name, dept.name from emp inner join dept on emp.deptid = dept.id;select emp.name, dept.name from emp left join dept on emp.deptid = dept.id;select emp.name, dept.name from emp right join dept on emp.deptid = dept.id;-- 6. 查询“开发部”的所有员工姓名和年龄select emp.name, emp.age from emp, dept where emp.deptid = dept.id and dept.name = '开发部';select emp.name, emp.age from emp join dept on emp.deptid = dept.id where dept.name = '开发部';select name, age from emp where deptid = (select id from dept where name = '开发部');-- 7. 查询薪资最高的三位员工select * from emp order by salary desc limit 0, 3;select * from emp order by salary desc limit 3;-- 8. 查询“人事部”的平均薪资select avg(salary) from emp where deptid = (select id from dept where name = '人事部');select avg(salary) from emp, dept where emp.deptid = dept.id and dept.name = '人事部';-- 9. 查询薪资大于平均薪资的所有员工,并按照年龄升序排序select * from emp where salary > (select avg(salary) from emp) order by age asc;-- 10. 查询男女员工的数量select gender "性别", count(*) "人数" from emp group by gender;