MySql相比较于SQL server具有体积更小,使用更方便等优点,并且MySql开源,主表采用索引组织表,使用物理复制。
MySql的默认路径: C:\Program Files 默认密码root
char是定长字符串类型 varchar是变长字符串类型 比char类型更节省空间
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字,都可以存放20个,最大大小是65532字节
SQL语言默认四种:
1.数据定义语言DDL(Data Definition Language)
即基础增删改查语言 create/drop/alter/turncate
2.数据操纵类语言DML(Data Manipuplation Language)
检查和更新语言: insert/delete/update/select
3.数据控制语言DCL(Data Control Language)
对象授权,用户维护等
grant/revoke/commit/rollback
4.其他
1. SQL语句:
SHOW DATABASES/TABLES 查看所有数据库/表
**create database db1 default character set utf8;**创建数据库
**drop database db1;**删除数据库
**create table t1(id int(3),name varchar(20),age int(2),country varchar(20));**创建表
alter table t1 add(info varchar(20)); 添加表字段
alter table t1 drop id; 删除表字段语句
**alter table t1 modify age varchar(20);**修改表字段类型格式
**alter table t1 change age newAge int(3);**修改表字段名称
**alter table t1 rename per;**修改表名
truncate table t1;turn表示截断 与drop不同 此处是清空表结构
**drop table t1;**删除表结构
- truncate 和 delete的区别
对于少量数据,delete效率高,一行一行删除
对于海量数据,truncate效率高
delete支持闪回,truncate不支持闪回
delete不会释放空间,truncate会释放空间
delete会产生碎片,truncate不会产生碎片
2.创建一个员工表小案例
create table t_employees_info (
user_id int(15) COMMENT ‘员工编号’,
name1 VARCHAR(10) COMMENT ‘员工姓名’,
job VARCHAR(9) COMMENT ‘员工职位’,
hiredate DATE COMMENT ‘入职日期’,
sal int(7) COMMENT ‘员工薪资’
);
向表中插入值
insert into t_employees_info (user_id,name,job,mgr,hiredate,sal,deptid) values (5555,‘zhangsan’,‘kaifa’,‘0000’,‘2000-1-1’,800,20);
查询员工表
查询员工表中员工部门是10和20的编号姓名等:
查询员工表中部门既不是20也不是30的所有员工信息
查询张三和李四的工资
按照组别算每个组的平均工资
查询部门id员工平均工资大于2000的部门(使用having语句)
SELECT共6个字句 SELECT FROM必须有 他们之间必须遵循严格的顺序
SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY
其中HAVING和*比较消耗资源 应尽量避免使用
1.比较运算
1 > >= < <= = <>(或!=)
2.范围查询
BETWEEN AND 、NOT BETWEEN AND
3.空值查询
IS null 、IS NOT null #IS不等同于’='
4.字符匹配查询
[NOT]LIKE<匹配的字符串>[ESCAPE<换码字符>]
%表示任意长度的字符串 _表示任意一个字符
5.当查询表中数据记录较多时,可以进行排序 order by字句
6.Distinct 去重
7.分组查询Group By子句
3.SQL函数
常用的聚合函数
1.count 统计指定字段的记录个数
2.sum 统计指定字段的和
3.avg统计指定字段的平均值
4.max\min返回指定字段中的最大\小值
函数:string || string 字符串连接操作
函数:CONCAT(str,str…)
也可以连接字符串和非字符串
函数:string || non-string 字符串连非字符串操作
函数:bit_length(string) 计算字符串的所占位数
函数:lower(string) upper(string)转换大小写
函数:position(substring in string)子串在字符串中的位置
函数:substring(string [from int] for int]) 截取任意长度的子字符串
函数:to_char(str1,text)将时间戳或者数字转化为字符串
SELECT TRUNC/ROUND/CEIL/FLOOR 数字截取/四舍五入/进位取整/退位取整
删除某张表的重复数据,只保留一条
思路:根据编号分组,将重复的数据放到一组中,然后一组只保留一个
rowid:物理地址 rowrun:逻辑地址
delete from t1 where rowid not in (select min(rowid) from t1 group by id);