数据库:保存和处理数据
1:种类Mysql Sql Server DB2 Oracel
SQL语句
打开终端
yum -y install mysql-server mysql 安装Mysql
service mysqld start 启动mysql服务
mysql -uroot 登录mysql
数据库---数据表---数据
文件夹层级关系
服务端
客户端
数据是以excel表格的形式保存的
文本数据:varchar(100)
数字数据:int
ERROR 错误提示
增删改查
1:show databases; 查看当前服务器有哪些数据库
2:create database 库名; 创建一个数据库
3:use 库名; 选择/进入一个数据库
4:show tables; 查看当前库有哪些表格
5:create table 表名(列名 类型); 创建一个数据表
create table abc(姓名 varchar(100),年龄 int,性别 varchar(100));
6:select * from 表名; 查询表数据
7:desc 表名; 查询表结构
8:insert into 表名 values(值1,值2); 添加数据
insert into abc values('张三',20,'男');
insert into 表名(列名) values(值); 指定列添加数据
9:drop database 库名; 删除表/库
drop table 表名;
10:delete from 表名; 删除数据
拷贝数据:create table 库名.新表名 select * from 旧表名;
11:update 表名 set 列名='值';
update stu set 姓名='张三'; 更改数据(整列)
update stu set 姓名='张三' where 年龄=30 or 性别='男'; 更改数据(指定数据)
条件表达式 where 列名='值'
= 是
!= 不是
> < >= <=
and 和
or 或
where 姓名='张三' and 性别='男'
select 函数
其他函数:
-聚合函数
对结果集进一步处理:求和,求平均,统计数量,最大值,最小值
sum(列名):求当前列所有数据的和
avg(字段名): 求当前列所有数据的平均值
count(字段名): 求当前列所有数据的数量
max(字段名):求当前列所有数据中的最大值
min(字段名):求当前列所有数据中的最小值
select sum(sal) from emp;
-空值函数
语法:
ifnull(列名,把null替换成要显示的信息):当字段的值为null时,取第二个参数的值
当字段的值不为null时,直接使用当前字段的值
4.函数的使用方法:
1)单独测试
select 函数的名字;
select concat('好好学习','天天向上');
2) 嵌套测试
select 函数名称( 另一个函数名称());
select length(trim(' hello '));
字符串(文字):
concat(字符串1,字符串2,字符串3):字符串拼接
length(字符串):输出字符串的字节长度(空格也占用一个字符长度)
upper(字符串):将字符串全部大写
lower(字符串):将字符串全部小写
substring(字符串,开始位置,截取的长度):截取指定位置的字符串
trim(字符串):去除字符串两边的空格
ltrim(字符串):去除字符串左边的空格
rtrim(字符串):去除字符串右边的空格
replace(字符串,被替换的字符串,替换成的字符串):字符串替换
strcmp(字符串1,字符串2):比较两个字符串的大小(按文字编码比较)
中文>英文>数字>符号
数值:
ceil(小数):向上取整
floor(小数):向下取整
mod(数值1,数值2):对数值1和数值2进行取余运算
select mod(3,2)
rand():生成0-1之间的随机数
round(小数,保留几位小数):对数值按照保留指定小数位进行四舍五入
时间:
now():获取当前时间年月日时分秒
curdate():获取当前时间中的年月日
curtime():获取当前时间中的时分秒
year(now()):获取当前年
month(指定时间):获取当前月
day(指定时间):获取当前日
hour(指定时间):获取当前时
minute(指定时间):获取当前分钟
second(指定时间):获取当前秒
week(指定时间):获取现在是当前年的第几周
weekday(指定时间):获取今天是周几
数据表的备份
是创建表和查询表语句的结合
语法:
create table 新表名 as select * from 原表名;
复制emp表,新表名为emp_copy
复制dept表,新表名为dept_copy
查看mydb里所有表
1.分组查询
语法:
group by 分组的字段 having 过滤条件
group by deptno,sex
规则:
1)有几行相同规则的字段才能分组
2)把相同规则的字段分组以后形成单行单列的结果
3)having过滤条件可以根据情况选择性添加
4) 多字段分组group by 字段1,字段2
2.SQL语句关键字的执行顺序:
from -----> where----->gorup by---->having ----->select ----->order by ---->limit
数据表的字段修改
describe 表名;
1:增加列
alter table 表名 add column 列名 类型;
指定位置添加列
alter table 表名 add column 列名 类型 after 列名;
2:删除列
alter table 表名 drop column 列名;
3:重命名表
alter table 表名 rename to 新表名;
4:修改列
alter table 表名 change column 列名 新列名 新数据类型;
mysql 用户管理和权限设置
1:在root用户下新建普通用户
create user 'zs'@'localhost' identified by '1234';
2:查看用户权限
show grants for 'zs'@'localhost';
grant usage on *.* to 'zs'@'localhost'
3:授予用户权限
grant create on a.* to 'zs'@'localhost'; 授予用户创建库a权限
4:回收用户权限
revoke create on a.* from 'zs'@'localhost'; 回收用户创建库a权限
5:对列的操作权限
grant alter on a.* to 'zs'@'localhost';
6:授予用户创建新用户的权限
grant create user on *.* to 'zs'@'localhost';
7:刷新权限表
flush privileges;
8:授予用户'将自己权限授予另一个用户'的权限
grant create on a.* to 'B'@'localhost' with grant option; A
grant create on a.* to 'C'@'localhost' identified by '1234'; B A B C