mysql语句

今日内容

  • mysql安装与卸载

  • mysql配置

  • SQL:结构化查询语言 Structured Quary Language

  • DDL:操作数据库、表

  • DML:增删改表中的记录

  • DQL: 查询表中的记录

  • DCL: 管理用户与授权

mysql安装与卸载

  1. 安装mysql 参见mysql安装文档

  2. 卸载分成两步:

    • 安装版:

      1. 找到my.ini datadir = C:/xxx 删除该目录下的文件

      2. 从控制面板中一键卸载 mysql服务开启状态

    • 配置版:

      1. 使用管理员权限打开cmd指令窗口 输入 net stop mysql

      2. 在指令窗口中 输入 mysqld -remove

      3. 删除本地安装的mysql目录文件夹

  3. mysql配置

    • mysql服务启动

      1. 通过管理员打开cmd指令窗口 输入 net start mysql

      2. 找到window服务窗口 打开运行窗口 输入 services.msc ----> 找到mysql 手动启动

    • mysql登录

      • 借助cmd指令窗口

        • mysql -u登录账号 -p 登录密码 没有密码直接回车就可以

        • mysql -h连接服务器的ip地址 -u登录账号 -p登录密码

          mysql -hlocalhost/127.0.0.1 -uroot -proot;

          如果通过ip连接不上,说明权限不够,给root账号开启连接mysql连接的权限

          grant all privilegegs on  *.* to root@'%' identified by '连接服务器的密码' with admin option/ with grant option
          ​
          0. 使用mysql数据库  use mysql; 
          1. grant all privileges on *.* to root@'%' identified by 'root' with grant option;
          2. flush privilegegs;  刷新mysql的系统权限
          3. 退出 重新通过ip进入
      • 借助于mysql可视化管理工具 Navicat

        解压Navicat压缩包 简单破解下,点击连接选择mysql 在连接窗口中输入连接名、连接服务器ip地址 、登录的账号和密码--->test 如果连接成功,代码已经成功登录进来

    • mysql 退出

      • quit

      • exit

    • mysql目录结构

      1. mysql安装目录结构 basedir目录中

        • bin: 二进制文件 mysql可执行的脚本 mysqld.exe

        • data: 数据 mysql运行需要的数据文件还有mysql运行的日志文件

        • include: C语言的头信息

        • lib: mysql运行需要支持的一些类库 jar包文件

        • share:mysql运行的一些错误信息

        • my.ini mysql的配置信息

      2. mysql数据目录结构 datadir目录中

        • 数据库: 一个个文件夹

        • 表 : 就是一个个文件

        • 数据 :一条条记录

 

  • 数据库管理系统、数据库和表的关系

    可以使用数据库管理系统创建多个数据库,比如java31/apartment数据库.....,一般一个项目对应的是一个数据库,一个数据库可以创建多张表,一般在项目中,数据库中的表映射Model类 pojo、model、entry

    比如数据库中创建一张用户表user 在后台服务器中一般对应的有一个model类 User.class

后台中的model类 一般用于临时存储从数据库中查询出来对应表中的数据, 如从user表查询出来一条记录,这条记录对应的就是后台服务器中的一个user对象(属性)

SQL 操作数据库

 #####        概念:结构化查询语言   Structured Quary Language
​
#####       作用
  1. 是一种数据库的查询的标准,对所有的数据库都支持

  2. 不同的数据库SQL语句可能有点不同 (方言),mysql oracle DB2

    sql语句分类

1.DDL:操作数据库、表 数据定义语言 Data Definition Language

2.DML:增删改表中的记录 数据操作语言 Data Manipulation Language

3.DQL: 查询表中的记录 数据查询语言 Data Query language

4.DCL: 管理用户与授权 Data Control language 数据控制语言

DDL 语言

  1. 操作数据库 CRUD操作

    • 创建数据库 方式有很多种: C ---create

      • create database 数据库名;

      • create database if not exists 数据库名;// 创建的时候先判断数据库是否存在

      • create database 数据库名 character set 编码字符集;// 创建数据库的指定编码字符集

-- 分号 一般是sql语句的结束标志
create DATABASE java31;
-- 创建数据库的第二种方式 create database if not exists 数据库名;
create database if not EXISTS apartment;
-- 创建数据库的第三种方式  create database 数据库名 character set 编码字符集;
create database school character set utf8;
-- 三者组合到一起表达
create database if not EXISTS college character set utf8;
  1. 查询 r --->retrieve

    • 查询当前数据库服务器的所有的数据库

      show databases;

    • 查询某个数据库的编码字符集:查询某个创建的数据库的编码字符集

      show create database 数据库名称;

  2. 修改 u--->update

    • 修改数据库的编码字符集

      alter database 数据库名称 character set 编码字符集;

-- alter  database 数据库名称 character set 编码字符集;
alter database college character set gbk;
  1. 删除 d -->delete drop

    • 删除数据库

      drop database 数据库名称;

    • 判断数据库是否存在,如果存在删除掉

      drop database if exists 数据库名称;

--  drop database if exists 数据库名称;
drop database if EXISTS school;
  1. 操作表

    1. 创建表 C --> create

      • 语法:

        create table 表名(

        列名1 数据类型,

        列名2 数据类型,

        。。。。。。。

        );

      • 数据类型

        • 整数类型 tinyint(微整形) 8位 smallint(小整形)16位 mediumint(中整形)24位 int(integer) 整形32位

        • 小数类型 double 8个字节 float 4个字节

        • 日期类型 date (年月日) time (时分秒) datetime (年月日时分秒) timestamp 时间戳 年月日时分秒

          时间戳,如果该字段为时间戳类型,没有赋值或者该字段值为null,则默认使用系统当前的时间自动赋值。一般情况一张表中只能有一个字段使用时间戳数据类型。

        • 字符串类型 char(固定长度的字符串) varchar(可变长度的字符串) 使用几个字符就占几个

        • 二进制类型 tinyblob(允许0~255个字节) big large blob(允许0~65535个字节) longblob(非常大)

        • 文本类型 tinytext (允许长度为0~255个字节) text(允许0~65535个字节) longtext(非常大)

           

    2. 查看表 查询 retrieve

      • show tables 查看当前使用的数据库下面的所有的表

      • desc 表名; 描述该表的结构

      • 查看创建的表 show create table 表名;---->查看该表创建使用到的sql语句

      • 快速创建一个表结构相同的表 create table 新表名 like 旧表名;

    3. 修改 update

      • 修改表名 alter

        alter table 旧表名 rename to 新表名;

      • 修改表的字符集

        alter table 表名 character set 编码字符集;

      • 添加一列字段 add

        alter table 表名 add 列名 数据类型;

      • 删除一列 drop

        alter table 表名 drop 列名;

      • 修改列名 数据类型

        • change alter table 表名 change 旧列名 新列名 新数据类型;

        • modify alter table 表名 modify 列名 新数据类型;

    4. 删除 delete

      • 删除表 drop table 表名;

      • 删除判断表是否存在 drop table if exists 表名;

    大多数情况下我们是直接借助于图形化管理工具 Navicat直接操作。

DML 增删改数据库中的表的数据

  1. 添加数据:

    • 语法:

      • insert into 表名(列名1,列名2,......列名n) values(值1,值2,......值n);

      • 注意事项:

        • 列名和后面值的类型要保持一致。

        • 如果表名后面没有指定列名,默认为给该表中的所有的列添加对应的值。注意依然是有顺序的。

          insert into 表名 values(值1,值2,......值n);

        • 除了数字类型外(int,double),其他类型一律要使用引号(单引号和双引号都可以)引起来。

  2. 删除数据:

    • 语法: delete

      delete from 表名 [where 条件];

    • 注意事项:

      • 如果后面不跟条件 ,则删除整张表的数据

      • 删除表的所有的记录 delete from student / truncate table 表名;(底层是先把表删除掉,然后再创建一张一模一样的表)

      • 如果条件中的字段值有重复的,凡是符合条件的都删除。

  3. 修改数据:update

    • 语法:

      update 表名 set 列名1 = 替换值1, 列名2 =替换值2,.....列名n = 替换值n [where 条件];

    • 注意:

      • 如果不带条件,则会修改表中的所有记录

DQL 查询表中的记录 select .... from .....

  • 语法

    select 需要查询的信息(列名1,列名2,.......列名n) / * from 表名 [where 条件];

    完善下:

    select

    字段列表

    from

    表名列表

    where

    条件列表

    group by

    分组字段

    having

    分组之后的条件

    limit

    分页限定

  • 去重查询 distinct

  • ifnull表达式 ifnull(表达式1,表达式2)

    表达式1: 代表那个字段需要判断是否为null

    表达式2:如果该字段值为null 后面的进行替换

  • 起别名操作

    语法 as 也可以省略不写 ​ 表名 as 新的名字

    查询出来的字段信息 as 新名字

    当你查询同一张表,并且进行多次查询的时候可以使用起别名来实现

    注意:

    起别名 只是在sql语句中方便查询使用的,并不会对数据原来的文件起到任何影响

代码语句

 

-- 注释 mysql中的注释 -- 空格 注释的内容 单行注释
/* 
    多行注释 (不能嵌套)
        
        


*/
# 注释 
-- select* from address
-- 创建数据库的第一种方式  SQL建议使用大写 大写和小写一般不区分
-- 分号 一般是sql语句的结束标志
CREATE DATABASE java31;


-- 创建数据库的第二种方式
CREATE DATABASE
IF NOT EXISTS apartments;


CREATE DATABASE school CHARACTER
SET utf8;


-- 三者组合到一起表达 
CREATE DATABASE
IF NOT EXISTS college CHARACTER
SET utf8 -- 查询
-- 查询当前所有的数据库
SHOW DATABASES;


SHOW CREATE DATABASE college -- alter database 数据库名称 character set 编码字符集;
ALTER DATABASE college CHARACTER
SET gbk -- drop database 数据库名称;
DROP DATABASE college;


-- drop database if exists 数据库名称;
DROP DATABASE
IF EXISTS school;


/*
create table 表名(


​    列名1 数据类型, 
​    列名2 数据类型, 
​    …… 
);
*/
-- 选择使用哪一个数据库 use 数据库名称
USE java31;


-- 创建学生表
CREATE TABLE Student (
    id INT,-- id 整数类型
    username VARCHAR(20),-- 姓名 可变字符串长度为20
    birthday date,-- 生日 日期类型
    gender VARCHAR(1)-- 性别 可变字符串长度为1
);
-- show tables 查看当前使用的数据库下面的所有的表
show tables;
-- desc 表名:描述该表的结构
DESC student;
-- 查看创建的表:show create table 表名;
show CREATE table student;
-- 快速创建一个表结构相同的表 create table 新表名 like  旧表名; 复制表
CREATE table baby like student;
-- 查看baby表结构
desc baby;
-- alter table 旧表名 rename to 新表名;
alter table baby rename to children;
-- 再次查看baby表结构
desc baby;


-- alter table 表名 character set 编码字符集;
show CREATE TABLE children;
alter table children CHARACTER set gbk;


desc children;
-- 给该表添加一个成绩的字段 score int(10)
-- alter table 表名 character add 列名 数据类型;
ALTER table children add score int(10);
-- alter table 表名 drop 列名;
alter table children drop score;


-- change alter table 表名 change 旧列名 新列名 新数据类型; 
alter table children change gender sex int(1); 


--  alter table 表名 modify 列名 新数据类型;
alter table children modify sex varchar(1);
-- 删除表 drop table 表名;
DROP table children;


-- 删除判断表是否存在 drop table if exists 表名;
drop table if EXISTS children;


-- 练习
show CREATE table children;
CREATE table laybaby like student;
desc laybaby;


drop table laybaby;


desc student;
-- 给学生表添加一条数据
-- insert into 表名(列名1,列名2,……列名n) values (值1,值2,……值n)
insert into student(id,username,birthday,gender) values (001,'小孙','1990-10-1','男');


-- 查看该表中的数据 select FROM
select* from student;


INSERT into student values(002,'小王','2020-10-1','女');
-- 插入一条记录 只添加姓名和姓名
INSERT into student(username,gender) values('小刘','男');


-- delete from 表名[where = 条件];根据表中的某个或某些字段的信息进行删除 一般删除都是用主键
delete from student where username = '小刘';


-- 字段值有重复
delete from student where gender = '男';
-- 删除整张表的记录
truncate table student;


-- 不使用条件
delete from student;
-- update 表名 set 列名1 = 替换值1,列名2 = 替换值2……列名n= 替换值n [where 条件];
update student set username= '小赵' where username = '小孙';


-- 全部改变
update student set id = '1000',username = '小丽',birthday = '2020-10-10',gender = '女' where username = '小赵';
-- 不带条件
update student set id = '1000',username = '小丽',birthday = '2020-10-10',gender = '女';


-- select 需要查询的信息(列名1,列名2,……列名n) / * from 表名[where 条件];


-- 查询男性同胞的姓名 
select username from student where gender = '男';mysql语句_第1张图片


-- 查询表中姓名含有小的同胞
select * from student where username like '%小%';


select * from student where username like '%孙%';
-- 查询表中的男性中的名字含有小的同胞
select * from student where username like '%小%' and gender  = '男';
 

你可能感兴趣的:(mysql)