1MySQL基础.docx
《1MySQL基础.docx》由会员分享,可在线阅读,更多相关《1MySQL基础.docx(12页珍藏版)》请在冰豆网上搜索。
1MySQL基础
1.基础知识
1)数据库
储存在计算机内,有组织的可共享的大量数据的集合。
2)数据库管理系统
DBMS
位于用户和操作系统之间的一层数据库管理软件。
我们通常所说的“数据库”指的是数据库管理软件。
它可以科学的组织和存储数据,高效的获取和维护数据。
3)目前主流的DBMS
微软access,SQLServer
瑞典MySQLABMySQL
IBM公司DB2
SyBase公司SyBase
Oracle公司oracle
4)开发人员学习内容
A,为一些小型项目设计合适的表
B,SQL语句
C,JDBC
5)mysql下载地址
6)mysql安装
7)基本mysql命令
A,启动和停止mysql服务
netstopmysql
netstartmysql
B,修改编码
默认是latin1编码,不支持中文
找到mysql的配置文件my.ini
[mysql]
default-character-set=latin1->utf8
[mysqld]
#datadir="C:
/ProgramData/MySQL/MySQLServer5.5/Data/"
datadir="D:
/mysql_data/"
character-set-server=latin1->utf8
C,登录本机的mysql服务器
mysql-h主机IP-u用户名-p密码
D,断开与服务器的连接
exit\q
E,查看数据库
showdatabases;
F,使用某个数据库
use数据库名;
G,查看表结构(查看表有哪些字段)
desc表名;
8)mysql支持的存储引擎
MyISAM:
不支持事务
InnoDB:
对事务有良好的支持,现在的版本默认都使用这种存储方式。
2.结构化的查询语言SQL
SQL是操作和检索关系型数据库的标准语言。
SQL结构简洁,功能强大,IBM公司1981年推出。
SQL根据功能分成四部分:
A,DDL
数据定义语言
用于定义和管理数据库对象。
一般以create,alter,drop指令开头。
(一个特殊的DDL命令:
truncate)
B,DML
数据操作语言
用于操作数据库对象中的数据。
一般以insert,update,delete指令开头。
C,DQL
数据查询语言
用于查询数据库对象中的数据。
可以单表查询,表连接查询,集合查询等。
一般以select指令开头。
D,TCL
事务控制语言
事务控制:
commit,rollback
权限控制:
grant,revoke
3.语法规范
A,SQL语句的关键字不区分大小写。
B,SQL中也会用到标识符(库名,表名,列名,变量名等),标识符命名规则:
1)必须以字母开头
2)可以包括字母,数字和#_$三个特殊符号
3)不能使用关键字。
建议使用多个单词连缀,中间用_隔开
4.DDL语句
数据库对象
表
table
数据的逻辑单元。
以行列的方式存在,列是字段,行是记录
数据字典
系统表。
存储与数据库有关的信息,由数据库系统自动维护,不应该手动修改。
一般仅用于查看。
约束
constranit
用于保证数据完整性的规则
索引
index
用于提高查询性能的一种手段
视图
view
一个或多个表中数据的逻辑显示
函数
function
用于完成特定功能的一段代码,有一个返回结果
存储过程
procedure
用于完成特定功能的一段代码,没有返回值,但是可以有输出参数
触发器
trigger
当特定事件发生时自动触发的一段代码
用户
user
可以操作数据库的一个用户
5.数据库创建与删除
createdatabase库名;
dropdatabase库名;
6.使用数据库
use库名;
7.表相关的DDL
1)创建表
createtable表名
(
列名列类型[default值],
列名列类型[default值],
……
列名列类型[default值]
)[表类型][表字符集];
创建表时创建的是表的结构,即表有多少列,列的类型是什么,默认值是什么。
2)mysql支持的数据类型
A,数值型
整型
TINYINT1字节
SAMLLINT2字节
INT4字节
浮点型
FLOAT4字节
DOUBLE8字节
DECIMAL
B,字符型
CHAR(M)定长
VARCHAR(M)可变长的
TEXT长文本
C,日期型
DATE日期
TIME时间
DATETIME日期时间
TIMESTAMP时间戳
YEAR年
3)修改表
A,增加新列
ALTERTABLE表名ADD列定义;
B,删除列
ALTERTABLE表名DROP列名;
C,修改列类型
ALTERTABLE表名MODIFY列名新类型;
D,修改列名
ALTERTABLE表名CHANGE旧列名新列名新类型(旧类型);
E,修改表名
ALTERTABLE旧表名RENAMETO新表名;
4)删除表
DROPTABLE表名;
5)约束
数据完整性:
实体完整性(行方向的完整性)主键约束
域完整性(列方向的完整性)非空,唯一,检查约束
参照完整性(多表之间)外键约束
用户自定义的完整性检查约束
约束本身也是数据库对象,也可以拥有名字。
A,非空约束(只能用于列)
NOTNULL
所有数据类型的值都可以为NULL.
✓添加非空约束
在建表时在列定义之后加入NOTNULL
通过修改表的方式后期添加
✓删除非空约束
B,唯一约束(用于列或列组合上)
UNIQUE
✓添加唯一约束
在建表时在列定义之后加入UNIQUE
CREATETABLEstu_course(course_idINT,course_nameVARCHAR(80)UNIQUE);
如果没有指定约束名,系统默认约束名和列名一样。
在建表时也可以指定约束名
通过修改表的方式后期添加
ALTERTABLEstu_infoADDCONSTRAINTstu_name_ukUNIQUE(stu_name);
✓查看约束详情
SELECT*FROMinformation_schema.TABLE_CONSTRAINTSWHEREtable_schema='student';
✓查看表详情
SELECT*FROMinformation_schema.`TABLES`WHEREtable_schema='student
✓删除唯一约束
MYSQL中删除唯一性约束是用删除索引的方式
ALTERTABLEstu_courseDROPINDEXcourse_name_uk;
C,主键约束
PRIMARYKEY
默认为唯一且不空
一个表只能建立一个主键,但唯一性约束可以有多个
mysql中不管是否有主键约束名,mysql总是把它命名为PRIMARY
(其他数据库此名有效)
✓添加主键约束
建表时创建
后期创建
ALTERTABLEstu_infoADDPRIMARYKEY(stu_no);
✓删除主键约束
ALTERTABLEstu_infoDROPPRIMARYKEY;
大多数数据库都支持主键自增,MYSQL使用auto_increment作为自增标识。
C,CHECK约束
mysql中不支持,所以不用学。
8.DML
主要操作的是表中的数据。
1)INSERTINTO
可以省略列名称,但是值要按照顺序。
INSERTINTOemployeeVALUES(NULL,'E00011','吴宗保','J001',NULL,20000,NULL,10);
推荐用不省略列名的方式
INSERTINTOemployee(emp_no,emp_name,emp_comm,emp_salary,job_no,dept_no)VALUES('E00033','',2000,10000,'J013',10);
VALUES('E00033','田明珠',2000,10000,'J013',10);
批量录入数据
INSERTINTOemployee(emp_no,emp_name,emp_salary)SELECTe_no,e_name,e_salFROMold_employee;
2)UPDATE
一次可以修改多条记录。
通过WHERE子句限定条件。
WHERE相当于if语句。
符合条件的记录会被修改。
没有加WHERE相当于全表修改。
UPDATEemployeeSETemp_name='贾鹏'WHEREemp_id=4;UPDATEemployeeSETemp_name='贾鹏鹏',manager_no='E00011'WHEREemp_id=4;UPDATEemployeeSETdept_no=10WHEREemp_id>=3;UPDATEemployeeSETemp_comm=emp_comm+500;UPDATEemployeeSETemp_salary=emp_salary*1.1WHEREdept_no=20;
3)删除
DELETEFROM
没有WHERE子句是全表删除。
MYSQL没有提供可恢复的机制。
CREATETABLEemployee_bakSELECT*FROMemployee;SELECT*FROMemployee_bak;DELETEFROMemployee_bak;
TRUNCATETABLE表名;
清空表(数据)效率更高。
属于DDL。
功能等同于DELETE不加WHERE条件。
TRUNCATETABLEemployee_bak;