zoukankan      html  css  js  c++  java
  • 数据库及MySQL基础(1)

    1、数据库概述

    关系型数据库:面对关系,Java面向对象。

    ·常见数据库

    Oracle(神喻):甲骨文
    DB2:IBM
    SQL Server:微软
    Sybase:赛尔斯
    MySQL:甲骨文,最早是开源的SUN;
    

    1.1理解数据库

    ·RDBMS-Relational database management system关系型数据库管理系统

    RDBMS-database-table-表结构&表记录

    RDBMS=管理员(Manager+仓库(database

    database=Ntable

    table=表结构(定义列名称和类型)和表记录(真实数据)

     

    表结构

     

    表记录

    1.2 应用程序与数据库

    应用程序使用数据库完成对数据的存储!

    备注:数据库的端口为3306

    2、数据库基本操作

    /usr/bin/mysqladmin -u root -p shutdown

    数据库停止

    /etc/init.d/mysql start

    数据库启动

    ps -ef|grep mysql

    linuxMySQL数据库状态查看

    mysql -uroot -p密码 -h地址

    mysql -uroot -p密码 -h27.0.0.1

    根权限进入数据库,可以开启多个客户端

    quitexit

    退出数据库

    mysqld.exe

    是服务的启动标准(服务器端)

    mysql.exe

    是客户端程序

    my.ini

    配置文件

    USE bookstore;

    进入数据库,大小写都可以但是一般要求标准是大写

    SHOW TABLES;

    显示数据表,注意一定要以【;】结尾

    SHOW DATABASES;

    显示所有数据库名称

    CREATE [IF NOT EXUSTS] 数据库名称

    [CHARSET=utf8]

    如果不存在时创建数据库

    DROP DATABASE 数据库名称;

    删除数据库

    ALTER DATABASE 数据库名

    CHARACTER SET uft8;

    修改数据库编码

    3、SQL语言概述

    3.1,什么是SQL:结构化查询语言(Structured Query Language);

    3.2,SQL的作用:客户端使用SQL语句来操作服务器;

    3.3,SQL标准由国际化标准组织(ISO)制定,对DBMS的统一操作方式;

    3.4,SQL方言,某种数据库有自己特有的控制语句;

    3.5,SQL语法:

    SQL语句可以单行或多行,以分号结尾;

    ②可使用空格和缩进来增强语句的可读性;

    MySQL不区分大小写,建议关键字都写大写;

     

    3.6,SQL语句分类:

    DDLData Definition Language:数据定义语言,用来定义数据库对象:库、表、列等;

    》创建、删除、修改:库、表结构;

    DMLData Manipulation Language:数据操作语言,用来定义数据库记录(数据);

    》增、删、改:表记录(内容)

    DCLData Control Language:数据控制语言,用来定义访问权限和安全级别;

    DQLData Query Language):数据查询语言,用来查询记录(数据)。

    4、DDL

    SHOW DATABASES;

    USE 数据库名称;

    CREATE DATABASE mufasa;//创建数据库

    1064错误语法错误

    4.1、数据类型

    int整型;

    double浮点型,例如double(5,2)表示最多五位,其中必须有2位小数,即最大999.99;

    decimal浮点型,在表单钱方面使用该类型,因为不会出现精度缺少问题;

    char固定长度字符串,char(255)长度不够的自动加空格补足!

    varchar可变长度字符串类型,varchar(65535)utf8汉字一个3个字节byte

    text(clob):字符串类型

    ——tinytext 2^8-1B

    ——text 2^16

    ——mediumtext 2^24

    ——longtext 2^32-1B~4GB-1B内存大小

    varbinary

    tinyblog

    blog 2^16-1B

    mediublog 2^24

    longblog 2^32

    date日期类型,yyyy-mm-dd;

    time时间类型,hh:mm:ss

    timestamp时间戳;

    4.2、表操作

    CREATE TABLE [IF NOT EXISTS] 表名(列名 列类型,列名 列类型,....);

    SHOW TABLES; 显示表

    DESC 表名称; 显示表结构

    DROP TABLE 表名称; 删除表

    ALTER TABLE 表名 ADD(列名 列类型,列名 列类型,列名 列类型); 增加列

    ALTER TABLE 表名 MODIFY 列名 列类型; 修改列类型

    ALTER TABLE 表名 DROP 列名;

    ALTER TABLE 原表名 RENAME TO 新表名;

    5、DML

    DQL:SELECT * FROM 表名;查询表中的数据

    DML(数据操作语言,它是对表记录的操作:增、删、改!)

     

    5.1,插入数据

     

    INSERT INTO 表名 (列名1,列名2,...) VALUES (列值1,列值2,...);//对应列名称插入

    INSERT INTO 表名 VALUES(列值1,列值2);//值的顺序,必须与给出的列的顺序相同

    INSERT INTO tb_stu (number,name,age,gender,SCORE) VALUES ('mufasa_0007','ZSS',20,'female',75);

    INSERT INTO tb_stu (number,name) VALUES ('mufasa_0002','zhangsan');

    INSERT INTO tb_stu (number,name,age,gender) VALUES ('mufasa_0001','万雨',25,'');//中文易出错

    INSERT INTO tb_stu VALUES('mufasa_0003','wanyu',30,'man');//与原始列相同,不建议使用可读性差

     

    5.2,修改数据

    UPDATE 表名 SET 列名=列值,列名=列值;//全部数据都修改

    UPDATE 表名 SET 列名=列值 WHERE 列名=列值;

    范例:UPDATE tb_stu SET name='mufasa' WHERE number='mufasa_0001';

    条件(条件可选的):

    >条件必须是一个boolean类型的值或表达式;

    >运算符=、!=<>><>=<=BETWEEN...ANDIN(...)IS NULLNOTORAND

    注意:列名=NULL;永远是false,可以使用IS NULL替换

     

    5.3,删除数据

    DELETE FROM 表名 WHRER 表中的条件数据;

    DELETE FROM tb_stu WHERE number='mufasa_0001';//删除特定一项

    DELETE FROM tb_stu;//全部删除

    6、DCL

    一个项目创建一个用户!一个项目对应的数据库只有一个!

    6.1,创建用户

    CREATE USER 用户名@IP地址 IDENTIFIED BY 'cipher';

    CREATE USER 用户名@'%' IDENTIFIED BY 'cipher';//所有IP地址都可使用

    范例:CREATE USER user@'%' IDENTIFIED BY 'cipher';

     

    6.2,给用户权限

    GRANT 权限1,...权限n ON 数据库.* TO 用户名@IP地址;

    范例:GRANT SELECT,CREATE,ALTER,DELETE,UPDATE ON mufasa.* TO user@'%';

    范例:GRANT ALL ON mufasa.* TO user@'%';

     

    6.3,撤销授权

    REVOKE 权限1,...权限n ON 数据库.* FROM 用户名@IP地址;

    >撤销指定用户在指定数据库上的制定权限

    >例如:REVOKE CREATE,ALTER,DROP, ON mufasa.* FROM user@'%';

    范例:REVOKE SELECT ON mufasa.* FROM user@'%';

     

    6.4,查看权限

    SHOW GRENTS FOR 用户名@IP地址;

    范例:SHOW GRANTS FOR user@'%';

     

    6.5,删除用户

    DROP USER 用户名@IP地址;

     

    7、DQL

    DQL-数据库查询语言

    查询不会修改数据库表记录

    7.1,基本查询

    1)查询所有列

    SELECT * FROM 表名;

    范例:SELECT  * FROM tb_stu;

     

    2)查询指定列

    SELECT 列名称1,列名称2 FROM 表名;

    范例:SELECT name FROM tb_stu;//查看name这一列的数据值

     

    3)完全重复的记录只一次

    SELECT DISTINCT 列名1,列名2 FROM 表名;

    范例:SELECT DISTINCT name FROM tb_stu;

    查询结果去重,显示;

     

    4)列运算

    ①数据类型的可以进行加【+】、减【-】、乘【*】、除【/;

    SELECT *,age*2 FROM tb_stu;

    SELECT *,IFNULL(age,0)*2 FROM tb_stu;

     

    ②字符串可以进行连续运算

    SELECT CONCAT(列名1,列名2) FROM 表名;

    范例:SELECT CONCAT(name,gender) FROM tb_stu;

     

    ③转换NULL

    IFNULL(列名,想要的显示)

     

    ④给列起别名

    SELECT 列名 [AS] 别名 FROM 表名;//其中AS可以选,标准是加上

    范例:SELECT name AS NAME FROM tb_stu;

     

    7.2,条件控制

    1)条件查询

    SELECT * FROM tb_stu WHERE name in ('wanyu','mufasa');//定向选择

    SELECT * FROM tb_stu WHERE age BETWEEN 20 AND 30;//数值范围查询,包含!!

    SELECT * FROM tb_stu WHERE age IS NOT NULL;//非空查询

    SELECT * FROM tb_stu WHERE age=30;//非空查询

     

    2)模糊查询

    SELECT * FROM tb_stu WHERE name LIKE 'w____';//查询w开头,定长度模糊查询

    SELECT * FROM tb_stu WHERE name LIKE '___';//查询三个长度的数值

    SELECT * FROM tb_stu WHERE name LIKE '%u';//查询u结尾数值,所有长度都可以查出

    SELECT * FROM tb_stu WHERE name LIKE '%u%';//查询有u字符的数值,开头结尾中间都行

     

    7.3,排序

    SELECT * FROM tb_stu ORDER BY age;//通过age(默认升序)排序显示

    SELECT * FROM tb_stu ORDER BY age ASC;//升序排列

    SELECT * FROM tb_stu ORDER BY age DESC;//降序排列

    SELECT * FROM tb_stu ORDER BY IFNULL(age,25) ASC, score DESC;//多列联合排序

     

    7.4,聚合函数

    SELECT COUNT(*) FROM tb_stu;//查询数据行非NULL的总数

    SELECT COUNT(age) FROM tb_stu;//查询某列中非NULL个数

    SELECT COUNT(DISTINCT age) FROM tb_stu;//查询某列非NULL、非重复个数

    SELECT COUNT(4) FROM tb_stu;//查询第1列的个数与【*】效果相同

     

    SELECT SUM(score) FROM tb_stu;//求和查询

    SELECT MAX(score) FROM tb_stu;//求最大

    SELECT MIN(score) FROM tb_stu;//求最小

    SELECT AVG(score) FROM tb_stu;//求均值

     

    SELECT count(*) AS 人数,SUM(score) AS 汇总分数,MAX(score) AS 最高分数,MIN(score) AS 最低分数,AVG(score) AS 平均分数 FROM tb_stu;

     

    7.5,分组查询

    SELECT gender,count(*) FROM tb_stu GROUP BY gender;

    //主信息只有两列,1分组列,2集合函数

    SELECT gender,count(*),MAX(score) FROM tb_stu GROUP BY gender;//显示最大值

    SELECT gender,count(*),MIN(score) FROM tb_stu WHERE score>80 GROUP BY gender;//先验条件

    SELECT gender,count(*),MIN(score) FROM tb_stu WHERE score>80 GROUP BY gender having count(*)>=2;

     

    执行顺序:SELECT,FROM,WHERE,GROUP BY,HAVING,ORDER BY,

     

    7.6,limit子句(方言)

    LIMIT用来限定查询结果的起始行,以及总数行。

    例如:查询起始行为第2行,一共查询3行记录

    SELECT * FROM tb_stu LIMIT 2,3;

     

    ①一页的记录数为10行;②查询第3页;

    SELECT * FROM tb_stu LIMIT (3-1)*10,10;

  • 相关阅读:
    Java实现 LeetCode 394 字符串解码
    Java实现 LeetCode 394 字符串解码
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 392 判断子序列
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 391 完美矩形
    Java实现 LeetCode 390 消除游戏
    Java实现 LeetCode 390 消除游戏
  • 原文地址:https://www.cnblogs.com/Mufasa/p/11110283.html
Copyright © 2011-2022 走看看