mysql的基础学习_day01
操作数据库,表
- show create database mysql;
- create database if not exists mydb;
- create database db3 character set gbk;
- create database if not exists db4 character set gbk;
修改数据库的字符集
alter database 数据库名称 character set utf8;
drop database 数据库名称;
drop database if exists db4;
//查看当前正在使用的数据库的名称
select database();
//使用数据库
use mydb;
-
操作表
show tables;
desc 表名;-
创建表:
create table student(
id int,
name varchar(32),
age int,
score double(4,1),
birthday date,
inser_time timestamp
); -
复制表
create table stu like student;
-
3.添加一列
alter table stu1 add gender varchar(2);
4.修改列名称 类型
alter table stu1 change 列名 新列名 新数据类型;
alter table stu1 modify 列名 新数据类型; //只能修改数据类型
5.删除列
alter table 表名 drop 列名
远端登录mysql
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
//允许用户root使用密码123456从任何主机连接到MYSQL服务器
GRANT ALL PRIVILEGES ON . TO 'root'@'192.168.211.131' IDENTIFIED BY 'root' WITH GRANT OPTION; //允许用户root从IP为10.1.1.123的主机连接到MYSQL服务器,并使用123456作为登录密码
FLUSH PRIVILEGES ; //刷新
vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改该配置文件当中的 bind-address = 0.0.0.0 即可
-
增删改表中的数据
DML:
1.添加数据- 基本的语法
insert into 表名(列名1,列名2,....列名n) values(值1,值2,....值n);
insert into stu1 (id,name,age) values(1,'张三',15);
*注意:
列名和值需要一一对应
如果表列名,不定义列名 values(值1,值2,)
INSERT INTO stu1 VALUES(2,'张三丰',100,99.9,"1875-11-11",NULL);
- 基本的语法
2.删除数据
*基本的语法
delete from 表名 [where 条件];
delete from stu1 where id = 1;
注意:
不加条件则删除表中的所有数据。
如果要删除表中的所有的数据:
delete from 表名 -- 不推荐使用
truncate table stu; -- 删除表,然后在创建一个一模一样的表
3.修改数据
基本的语法:
* update 表名 set 列名1=值1,列名2 =值2,...列名n=值n where id = 3;
注意:
1.如果不加任何的where条件的话,则会将表中的记录全部修改。
DQL 查询语句所有
select * from stu1;
1. 语法:
select
字段名列表,
from 表名,
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
2.基础查询
1.多个字段的查询
select 字段名,字段名2,...from 表名;
注意:
*如果查询所有字段,则可以用*代替
2.去重复
*distinct
select distinct * from student
3.计算列
一般可以使用size运算计算一些列的值。一般只会进行数值类型的计算
ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
表达式1:哪个字段需要判断是否为null
如果该字段为null后的替换值。
4.起别名
as :as也可以省略
create table student(
id INT, -- 编号
NAME VARCHAR(20), -- 姓名
age INT, -- 年龄
sex VARCHAR(5), -- 性别
address VARCHAR(100), -- 地址
math INT, -- 数学
english INT -- 英语
);
INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES (1,'马云',55,'男','杭州',66,78),(2,'马化腾',45,'女','深圳',98,87),(3,'马景涛',55,'男','香港',56,77),(4,'柳岩',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,80),(6,'刘德华',57,'男','香港',99,99),(7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);
TRUNCATE TABLE student; -- 它执行两个操作,先把表删除,在复制一张表名一样的空表,比delete的执行效率高
DROP TABLE student;
SELECT * FROM student;
UPDATE student SET address = '杭州' WHERE id =1;
UPDATE student SET english = 80 WHERE id = 5;
SELECT NAME,age FROM student;
SELECT address FROM student ;
-- 去重 distinct
SELECT DISTINCT address FROM student;
SELECT DISTINCT address FROM student;
--计算成绩
SELECT NAME,math,english,math+english FROM student;
-- ifnull
SELECT NAME,math,english,math+IFNULL(english,0) FROM student;
-- 起别名
SELECT NAME,math,english,math+IFNULL(english,0) 总分 FROM student;
3. 条件查询
1.where 字句后跟条件
2.运算符
* > < = <= >= = <>
between and
in
-- 查询大于20岁的人
SELECT * FROM student WHERE age > 20;
-- 查询年龄在20岁和30岁之间
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-- 查询 20 22 30岁的人
SELECT * FROM student WHERE age IN(20,19,30);
-- 查询English的成绩为null的 (记住null不能用等号)
SELECT * FROM student WHERE english IS NULL;
-- 查询姓马的人
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询是三个字名字的人
SELECT * FROM student WHERE NAME LIKE "___";
-- 查询名字第二个字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";
-- 查询名字中包含德的人
SELECT * FROM student WHERE NAME LIKE "%德%";
浙公网安备 33010602011771号