mysql的基础学习_day01

操作数据库,表

  1. show create database mysql;
  2. create database if not exists mydb;
  3. create database db3 character set gbk;
  4. 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 "%德%"; 
posted @ 2020-11-28 00:11  码农一号111  阅读(55)  评论(0)    收藏  举报