# Mysql Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 ## 安装 压缩版安装 1. mysql-5.7.4-m14-winx64.zip下载 2. 解压到D:/mysql.(路径自己指定) 3. 在D:/mysql/mysql-5.7.4-m14-winx64下新建my.ini配置文件 内容如下: > ####################配置文件开始################### > # For advice on how to change settings please see > # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the > # *** default location during install, and will be replaced if you > # *** upgrade to a newer version of MySQL. > [client] > default-character-set=utf8 > [mysqld] > port=3306 > basedir ="D:/Program Files/MySQL/MySQL Server 5.7" > datadir ="D:/Program Files/MySQL/MySQL Server 5.7/data/" > tmpdir ="D:/Program Files/MySQL/MySQL Server 5.7/data/" > socket ="D:/Program Files/MySQL/MySQL Server 5.7/data/mysql.sock" > log-error="D:/Program Files/MySQL/MySQL Server 5.7/data/mysql_error.log" > character_set_server=utf8 > init_connect='SET NAMES utf8' > #server_id = 2 > #skip-locking > max_connections=100 > table_open_cache=256 > query_cache_size=1M > tmp_table_size=32M > thread_cache_size=8 > innodb_data_home_dir="D:/Program Files/MySQL/MySQL Server 5.7/data/" > innodb_flush_log_at_trx_commit =1 > innodb_log_buffer_size=128M > innodb_buffer_pool_size=128M > innodb_log_file_size=10M > innodb_thread_concurrency=16 > innodb-autoextend-increment=1000 > join_buffer_size = 128M > sort_buffer_size = 32M > read_rnd_buffer_size = 32M > max_allowed_packet = 32M > explicit_defaults_for_timestamp=true > sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" > #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES > ####################配置文件结束################### 4. 重点是以下配置,其中datadir的目录名称必须是:D:/Program Files/MySQL/MySQL Server 5.7。 在windows系统环境变量path,加入如下内容 D:/mysql/mysql-5.7.4-m14-winx64/bin;(注意加分号) 5. 将mysql注册为windows系统服务 具体操作是在命令行中执行以下命令(需要以管理员身份运行命令行): 增加服务命令:mysqld install MySQL --defaults-file="D:/Program Files/MySQL/MySQL Server 5.7/default.ini" 移除服务命令为:mysqld remove 6. 第5步成功后,打开系统服务管理 可以看到mysql系统服务(此处需要注意): 需要在mysql服务的登陆属性里配置管理员用户登陆(不配置从服务管理里启动报1035错误,在命令行启动报启动失败) ~~~ 在命令行启动mysql命令为: net start mysql 关闭mysql命令为:net stop mysql ~~~ 修改root的密码为123456 ~~~ 命令行执行:mysql –uroot mysql>show databases; mysql>use mysql; mysql> UPDATE user SET password=PASSWORD('root') WHERE user='root'; mysql> FLUSH PRIVILEGES; mysql> QUIT ~~~ 新版本 `update MySQL.user set authentication_string=password('root') where user='root' ;` **注意** 远程登陆 允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下: 1)在本机先使用root用户登录mysql: `命令行执行:mysql -u root -p` 输入密码(第7步中设置的密码):123456 2)进行授权操作: `mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;` 重载授权表: ~~~ mysql>FLUSH PRIVILEGES; 退出mysql:quit.. ~~~ data文件夹 5.7版本在解压后是没有data这个文件夹的,不要手动建立一个空的data文件夹,而是进入cmd,输入mysqld --initialize-insecure自动生成无密码的root用户,同时自动生成一个data文件夹,这时候再进行MySQL的安装,net start mysql,启动服务。 如果你已经安装好了MySQL,那么先删除你手动建立的data文件夹,然后再输入mysqld --initialize-insecure【如果不输入-insecure会生成随机密码,第一次登陆会出现问题】,启动服务即可 服务没有安装。 解决办法: 在 mysql bin目录下 以管理员的权限 执行 `mysqld -install`命令 然后仍然以管理员的权限` net start mysql `开启Mysql服务了。 安装版安装 注意 这里只有关键步骤截图 配置 添加环境变量 命令行操作 常见命令 mysql服务 ~~~ net stop mysql net start mysql ~~~ 登陆mysql mysql -h 主机ip -u 用户名 -p 用户密码 一般操作 Show Databases; Use database-name Show tables; Select Insert update delete 可视化工具 (Navicat Premium) ## Select SELECT语句的执行的逻辑查询处理步骤: > (8)SELECT (9)DISTINCT > (11)<TOP_specification> <select_list> > (1)FROM <left_table> > (3) <join_type> JOIN <right_table> > (2)  ON <join_condition> > (4)WHERE <where_condition> > (5)GROUP BY <group_by_list> > (6)WITH {CUBE | ROLLUP} > (7)HAVING <having_condition> > (10)ORDER BY <order_by_list> > 每个步骤产生一个虚拟表,该虚拟表被用作下一个步骤的输入。只有最后一步生成的表返回给调用者。如 > 果没有某一子句,则跳过相应的步骤。 > 1. FROM:对FROM子句中的前两个表执行笛卡尔积,生成虚拟表VT1。 > 2. ON:对VT1应用ON筛选器。只有那些使<join_condition>为真的行才被插入VT2。 > 3. OUTER(JOIN):如果指定了OUTER JOIN,保留表中未找到匹配的行将作为外部行添加到VT2,生成VT3。 > 如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到 > 处理完所有的表为止。 > 4. 对VT3应用WHERE筛选器。只有使<where_condition>为TRUE的行才被插入VT4。 > 5. GROUP BY:按GROUP BY 子句中的列列表对VT4中的行分组,生成VT5。 > 6. CUBE|ROLLUP:把超组插入VT5,生成VT6。 > 7. HAVING:对VT6应用HAVING筛选器。只有使<having_condition>为TRUE的组才会被插入VT7。 > 8. SELECT:处理SELECT列表,产生VT8。 > 9. DISTINCT:将重复的行从VT8中移除,产生VT9。 > 10. ORDER BY:将VT9中的行按ORDER BY子句中的列列表排序,生成一个有表(VC10)。 > 11. TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回给调用者。 ## where > 操作符 描述 > = 等于 > &lt;&gt; 不等于 > &gt; 大于 > &gt; 小于 > &gt;= 大于等于 > &lt;= 小于等于 BETWEEN 在某个范围内 LIKE 搜索某种模式 **注释**:在某些版本的 SQL 中,操作符 &lt;&gt; 可以写为 !=。 AND 和 OR 运算符 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。 # Insert `INSERT INTO 表名称 VALUES (值1, 值2,....)` 我们也可以指定所要插入数据的列: `INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)` ## Update `UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值` ## Delete `DELETE FROM 表名称 WHERE 列名称 = 值` # 实例 ## 查询 ~~~ SELECT SELECT * FROM dm_info SELECT 查询的列 FROM 表名 SELECT name FROM dm_info * 表示所有的列 SELECT * FROM dm_info WHERE valid =1 SELECT * FROM dm_info ORDER BY id DESC #降序 SELECT num nm,batch,name ,major FROM dm_info ORDER BY batch DESC,major DESC SELECT * FROM dm_info WHERE `name` LIKE '祥' # _代表一个任意字符 %代表任意多个字符 模糊查询的 %key% SELECT * FROM dm_info WHERE id <>10 #I= or <> SELECT * FROM dm_info WHERE 4 < id<10 # 4<id and id<10 SELECT * FROM dm_info WHERE id BETWEEN 4 and 10 # 4<=id<=10 SELECT * FROM dm_info WHERE `name` LIKE "?%" SELECT * FROM dm_info WHERE `name` LIKE "1" or 1=1 or "%" #曾" or 1=1 or `name` = " SELECT DISTINCT major FROM dm_info #DISTINCT 去除重复的数据 --- union full union SELECT batch FROM dm_info SELECT COUNT(batch) FROM dm_info SELECT AVG( batch) FROM dm_info #GROUP BY 分组 ~~~ 分页 ~~~ SELECT * FROM dm_info ORDER BY id DESC LIMIT 0,10 SELECT * FROM dm_info LIMIT 10 #SELECT * FROM (SELECT * FROM dm_info ORDER BY id ASC LIMIT 20 ) as ttt ORDER BY id DESC LIMIT 10 SELECT * FROM dm_info WHERE id in(5,6,7,8,9) SELECT * FROM dm_info WHERE id NOT in(5,6,7,8,9) SELECT * FROM dm_info WHERE batch is not null SELECT * FROM dm_info where id >14 and id<25 SELECT * FROM dm_info LIMIT 6,2 ~~~ ## 非查询 更新 UPDATE ~~~ UPDATE dm_info SET `name`='1',sex='未知',batch='100' WHERE id=10 ~~~ 删除 DELETE ` delete FROM dm_info WHERE id<10` 添加 insert ~~~ INSERT INTO dm_info(name,sex,) VALUES('zxy','未知') INSERT INTO `dm_info` VALUES (DEFAULT,'zxysilent', '曾祥银', '男', 'XXYJSKX', '信息与计算科学', '汉族', '南充市', 'abddddd', true); ~~~