1、MySQL基础知识第一章 MySQL 基本功能1.1 MySQL数据库操作1.1.1 create 建立数据库说明create database db_name;eg: create database mydatabase; use mydatabase;建立一个数据库使用数据库 建立表:说明:create table table_name (table definitio);eg:create table student( id int primary key, name varchar(10) NOT NULL, sex int);建立一个表 建表常用的字段说明1. primary key
2、指定该字段为主键2. unique指定列不能包含相同字段3. NOT NULL指定该字段不能为空1.1.2 use语句 格式作用格式:use database_name; Eg: Use mydatabase; Use 的作用:指定某个数据库作为当前的数据。1.1.3 insert(添加记录)向表中添加数据说明insert into table_name value(value1, value2, value,);eg:insert into emp value(110,”shinesun”,1);向表中加入数据。1.1.4 alert table(修改表结构) 代码ALTER TABLE t
3、able_name 改变方式 加一个栏位: ADD 栏位 1 栏位 1 资料种类 ALTER table customer add Gender char(1);ALTER TABLE Customer ADD PRIMARY KEY (SID);ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid); 删去一个栏位: DROP 栏位 1 ALTER table customer drop Gender; 去掉主键操作 Alter table customer modify id int,drop p
4、rimary key; 改变栏位名称: CHANGE 原本栏位名 新栏位名 新栏位名资料种类 ALTER table customer change Address Addr char(50); 改变栏位的资料种类: MODIFY 栏位 1 新资料种类 ALTER table customer modify Addr char(30);1.1.5 update(记录的修改)代码说明UPDATE 表格 SET 栏位1 = 值1, 栏位2 = 值2WHERE 条件eg: update mytable id=101 where name=sys 同时修改好几个字段的值。1.1.6 delete和dr
5、op(记录、表和数据库)delete操作说明delete from table_name(where);eg:delete from emp where sex=1;从table中删除部分或全部记录数据。 drop操作说明drop database db_name;drop table table_name;drop col_name;eg: drop database mydatabase; drop table emp; drop sex;将数据库或table或talble的某一列删除掉,包括本身的结构。 TRUNCATE说明TRUNCATE TABLE 表格名 TRUNCATE TABL
6、E customer;所以,我们如果要清除在 SQL Create 那一页建立的顾客表格之内的资料,我们就打入:1.2 MySQL 数据基本类型1.2.1 字符串类型字符串说明“hello”使用“”标识。其他就是字符。0, nMySQL中有转义字符 charvarcharTEXT 声明固定长度 1-255 空格补齐 长度可变 1-255 最后的空格自动删去 长度1-216 弥补char和varchar的字符限制。这个一般是够用了。当然还有更大的。 1.2.2 数值类型数值说明:select 3.14, 3.14e-10, 3.14e+10, 3.14e+3, 0x31;MySQL支持两种数值型
7、:整数和浮点数。MySQL中的十六进制必须使用0x,而不是0X,要注意。int 4字节double 8 字节float 4 字节1.2.3 null类型 null类型说明:select 4+null, 4; null和“”并不是一个东西,这个要注意。 任何数值和null比较后返回都是false。 任何表达式有null返回都是null。1.2.4 用户变量 代码说明:1. 创建用户变量的定义 set myvar1=7, myvar2=8;2. 显示用户变量 select myvar1, myvar2; MySQL中支持的用户变量. 用户变量一般生存周期是1.2.5 日期类型类型说明datetim
8、e0000-00-00 00:00:00 (常用)data0000-00-00timestamp0000000000000(长度取决于显示器尺寸)time00:00:00year0000 例子:日期类型的赋值:类似于字符串 insert into student value(100,”miaoshuai”,1,”2009-9-10”);1.2.6 MySql的表达式 说明 MySQL中的表达式和运算符是和其他高级语言是类似的,用的时候查一下就可以了。1.3 其他命令:命令说明show databases;显示所有数据库列表。?显示帮助信息。select database();显示当前正在用的d
9、atabase。show tables【 from db_name;】从指定数据库中显示table。describe table_name;显示table的详细信息。show columns from table_name;显示指定table中的详细字段。第二章 select 语句详解2.1 单张表select语句 store表格name sale Date Los $1500 1999-01-05 San $250 1999-01-07 Los $350 1999-01-08 Boston $750 1999-01-08 2.1.1 distinct代码说明select distinct n
10、ame from store;distinct:显示列的时候显示不同的列值。2.1.2 AND|OR代码说明select name from store where sale1000 OR (sale275)条件表达式的连接。2.1.3 IN代码说明select *from storewhere name IN (“los”, “san”);IN:修饰前面的字段,将其条件限制在IN后的括号里。2.1.4 between 条件一 and 条件二代码说明select *from storewhere Date between “1999-01-05” and “1999-01-7”; 条件限定在b
11、etween和and之间。 这个是闭区间。2.1.5 like代码说明select *from storewhere name like “%os%”; Like类似与java中正则表达式。 Like的类型:A_Z: 所有以 A 起头,另一个任何值的字原,且以 Z 为结尾的字串。ABC%: 所有以 ABC 起头的字串。%XYZ: 所有以 XYZ 结尾的字串。%AN%: 所有含有 AN 这个套式的字串。2.1.6 order by代码说明select *from storewhere name like %os% order by sale; order by用于某个字段进行排序 asc:表示升
12、序 desc:表示降序2.1.7 函数代码:说明select sum(sale)from store; 函数的作用 AVG (平均) COUNT (计数) MAX (最大值) MIN (最小值) SUM (总合) 函数名(“字段名”) 函数的使用必须要有group by2.1.8 count代码:说明select count(name)from store; 计算出满足要求的记录个数。 count(“字段名”)2.1.9 group by select name, sum(sale)from storegroup by name 按照字段进行分组,其实就是合并字段相同信息。 代码含义:将字段值
13、相同合为一组,并为合并为一组的信息就sum。 通常group by的使用是建立在select要显示的字段上,这个才有意义。2.1.10 having 代码:说明select name, sum(sale)from storegroup by name having sum(sale) 1500; having 是对函数求结果后,限制显示结果条件。 group by是需要的。2.1.11 alias代码:说明select A1.name, sum(sale)”Totle”from store A1group by A1.name; 最常用到的别名有两种: 栏位别名及表格别名。 显示或引用的时候便
14、于理解的“别名”。2.2 两张表select语句Store表格store sale Date Los $1500 1999-01-05 San $250 1999-01-07 Los $300 1999-01-08 Boston $700 1999-01-08geography 表格region store east Boston east New west Los west San 2.3.1表格连接 代码:说明select A.name, sum(B.sale)”Totle Sum”from store A, geography Bwhere A.name = B.namegroup by
15、 B.region; 表格的连接就是:通过两个表格中相同字段下的相同记录,从而将两个表连接起来。 这种连接是:笛卡尔连接是4*4 =16个记录。 这种连接的效率是低下的。 不建议使用2.3.1 外连接 代码:说明SELECT A1.store_name, SUM(A2.Sales) SALES FROM Georgraphy A1, Store_Information A2 WHERE A1.store_name = A2.store_name (+) GROUP BY A1.store_name 这个是Orecle的外连接。mySQL2.3.4 subquery代码:说明select sum
16、(sale)”WEST TOTEL”from storewhere name in( select name from geogrrphy where region = “west”); subquery就是先找出哪些店是在西区的,然后再算出这些店的营业额总共是多少。2.3.5 union代码:说明(select name from store)union(select name from geography) 将两个两个select的结果,进行相加。 相同的结果只显示一次。2.3.6 union all代码:说明(select name from store)union all(select
17、 name from geography) 将两个两个select的结果,进行相加。 相同的结果仍然可以显示。2.3.7 intersect代码说明(select name from store)intersect(select name from geography) 求两个select语句结果中,相同的结果。2.3.8 minus 代码说明(select name from store)minus(select name from geography) 求第一个select的结果而在第二个select中没有的结果。2.3.9 concat 代码说明SELECT region_name +
18、+ store_name FROM Geography WHERE store_name = Boston;等价于SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = Boston; 将两个字段记录合成一个记录值。2.3.10 SUBSTR代码说明SELECT SUBSTR(store_name, 3) FROM Geography WHERE store_name = Los Angeles;下标从1开始。2.3.11tirm 代码说明SELECT TRIM(Sample); LTRIM(字串): 将所
19、有字串起头的空白移除。 RTRIM(字串): 将所有字串结尾的空白移除。 Trim是取出字符串前后的多余的空字符的。2.4 create view store 表格 store_namesalesDateLos$15001999-01-05San$2501999-01-07Los$3001999-01-08Boston$7001999-01-08 Geography 表格 regionstoreEastBostonEastNewWestLosWestSan 代码说明(1)建立一个viewCREATE VIEW V_REGION_SALESAS SELECT A1.region_name REG
20、ION, SUM(A2.Sales) SALESFROM Geography A1, Store_Information A2WHERE A1.store_name = A2.store_nameGROUP BY A1.region_name(2)使用SELECT * FROM V_REGION_SALES view其实就是多个表中抽取出需要的字段,在组成一个新的table。 这个表是个虚表。他是建立在表格上的一个框架,本身不具有存储性。2.5 create index 代码说明Create index index_name on store(name) 在store的表上以name建立一个名字为index_name的索引。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1