数据库分类
* 网状型数据库
* 层次性数据库
* 关系数据库
常用关系型数据库
DB2: IBM的
oracle:Oracle公司
mssql server: Microsoft 公司
mysql : 瑞士MySQL AB,现在由oracle收购
mysql常用语法:
cmd中链接mysql的方法
连接本地 mysql -u用户名 -p密码
例如: mysql -uroot -p123456 链接用户名是root,密码是123456的本地数据库
连接远程 mysql -h地址 -u用户名 -p密码
例如: mysql -h192.168.1.18 -uroot -p123456
修改用户名
mysqladmin -u用户名 -u旧密码 password 新密码
显示数据库
show databases
使用数据库
use 数据库名
显示数据库中所有的表
show tables
显示表结构
desc 表名
#注释
创建表:
create table 表名 ( 列名1 类型,列名2 类型)
mysql 数据类型
char(size) 定长字符,0-255
varchar(size) 变长字符 0-255
date 日期数据 mysql用‘YYYY-MM-DD’格式检索和显示DATE
datetime 日期数据“YYYY-MM-DD HH:MM:SS”
int 整型
double[(s,p)] 数字型,可存放实型和整型,精度p,和范围s
s:整数部分的个数+小数部分的个数
p:小数本分的位数
double(5,2) 最大是999.99
double(5) 最大是99999
double(5,0) 最大是99999
BlOB (oracle) 存放图形,声音和影像,二进制对象,0-65535字节
text 存放大文本文件, 0-65535
查询
创建练习表
#员工信息表 CREATE TABLE employees( employee_id INT, #员工编号 first_name VARCHAR(20), #员工姓 last_name VARCHAR(25), #员工名 email VARCHAR(25), #mail地址 phone_number VARCHAR(20), #电话 hire_date DATE, #雇佣时间 job_id VARCHAR(10), #职务 salary DOUBLE(8,2), #月薪 commission_pct DOUBLE(2,2), #奖金的百分比 manager_id INT, #管理者编号 department_id INT #部门编号 ); #部门信息表 CREATE TABLE departments( department_id INT, #部门编号 department_name VARCHAR(30), #部门名称 manager_id INT, #管理者编号 location_id INT #部门位置编号 ); #部门地理位置表 CREATE TABLE locations( location_id INT, #地区编号 street_address VARCHAR(40), #街道名 postal_code VARCHAR(12), #邮编 city VARCHAR(30), #城市 state_province VARCHAR(25), #省市 country_id CHAR(2) #国家编号 );
SELECT {*, COLUMN [alias],...} FROM TABLE
select 选择查询列表 from 提供数据源(表,视图或其他的数据源)
查询表中的所有数据,select * 和select 列名效果一样
SELECT * FROM employees SELECT employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,commission_pct,manager_id,department_id FROM employees
CONCAT 连接两个字段合并为一个
SELECT employee_id,CONCAT(first_name,last_name),job_id,salary*12 FROM employees
使用别名的语法结构: [字段名 别名]或者[字段名 as 别名]
SELECT CONCAT(first_name,last_name) 姓名 ,salary 月薪 FROM employees
定义字段别名强制大小写 给别名加上"",默认显示的是小写
SELECT CONCAT(first_name,last_name) "NAME" ,salary "SAL" FROM employees
带有限制条件的查询
# sql语句中 字符串和日期要用单引号扩起来 # 数字类型直接书写 #使用WHERE子句限定返回的记录 SELECT [DISTINCT] {*, COLUMN [alias], ...} FROM TABLE [WHERE CONDITION(s)]; # WHERE子句在 FROM 子句后 #查询职务='总经理'的员工 SELECT employee_id,first_name,last_name,department_id FROM employees WHERE job_id='总经理' #其它的比较运算符 #使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用 #包含开始和结尾 #查询工资2900-3600的员工信息 SELECT * FROM employees WHERE salary BETWEEN 2900 AND 3600 #使用IN运算符获得匹配列表值的记录,在IN操作符后跟着一个值的列表,可以应用日期,字符串数据类型 #查询部门是10和20的员工信息 SELECT * FROM employees WHERE department_id IN(10,20) #使用LIKE运算符执行通配查询 查询条件可包含文字字符或数字 (%) 可表示零或多个字符 (_)可表示一个字符 #查询员工姓名包含c的员工信息 SELECT * FROM employees WHERE first_name LIKE '%c%' #使用not in运算符 查询职务不是"总经理"或 销售经理 的员工信息 SELECT * FROM employees WHERE job_id NOT IN('总经理','销售经理') #增加排序 SELECT [DISTINCT] {*, COLUMN [alias], ...} FROM TABLE [WHERE CONDITION(s)] ORDER BY 字段名 排序方式 ASC: 升序,缺省 DESC: 降序
运算符优先级
1)所有的的比较运算符
2) not
3) and
4) or
DML语句 insert update delete
DDM语句 针对数据库和表的操作
增加条件
使用列的别名排序
desc 表名 查询表的结构
distinct 去掉重复行
select distinct job form emp 去掉重复的job,并返回查到的job
select distinct deptno,job from emp 去掉重复的deptno,job字段组合
select distinct * from emp 表中所有字段组合不重复
多表查询,
等值连接 多个有关联的表
自连接 基于一个表的等值连接
数据操作语言
约束
`主键约束:非空且唯一
一个表中只允许有一个主键
主键是表中能够唯一确定一个行数据的字段
主键字段可以使单字段或者多字段的组合
1 在创建表的同时创建 列级约束
primary key 列级约束
2 在创建表的同时创建 表级约束
语法结构
constraint 约束的名称[自定义] 约束的类型(约束的字段1,约束的字段2)
3 在表的外部定义
语法
alter table 表名
add constraint 约束的名称 约束的类型(约束的字段)
4 组合主键 在建表的同时创建
CONSTRAINT 约束名称 primary key(约束字段1,约束字段2)
5 组合主键
语法
alter table 表名
add constraint 约束名称 primary key(字段1,字段2)
外键约束
外键是构建一个于一个表的两个字段或者两个表的两个字段之间的关系
子表的外键列的值必须在主表的主键的范围内或者为空
1语法
constraint 约束的名称 foreing key(子表的字段) references 主表(主表的主键)
2语法
alter table 表名
add constraint 约束的名称 foreing key(子表的字段) references 主表(主表的主键)
mysqldump 备份数据库
mysqldump -uroot -proot test > d:/a.sql
恢复数据库
mysql -uroot -proot test < D:/a.sql
文章评论